GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Top 10 SSH-Funktionen, die Sie kennen MÜSSEN, um produktiver zu sein

Dieser Artikel setzt unsere Linux-Artikelserie fort und behandelt viele nützliche SSH-Funktionen und Tricks zur Verbesserung Ihrer täglichen Produktivität. Unsere Visualisierungen helfen Ihnen, die Einrichtung von SSH, die Verwaltung von Konfigurationsdateien, die Authentifizierung, die Arbeit mit mehreren SSH-Schlüsseln und natürlich die lokale und Remote-Portweiterleitung von SSH zu verstehen. Werden Sie in 10 Minuten zum SSH-Master!

Was ist SSH

Secure Shell oder SSH ist ein Netzwerkprotokoll, mit dem Sie sich sicher mit einem Remote-Server verbinden und ihn über eine Konsolenschnittstelle verwalten können.

Wenn Sie eine SSH-Verbindung herstellen, startet der Server eine Shell-Sitzung für Sie. Danach können Sie die Befehle in Ihren SSH-Client eingeben und sie werden auf einem Remote-Server ausgeführt.

Systemadministratoren verwenden dieses Protokoll, um Remote-Linux-Server sicher zu verbinden und zu verwalten.

Wie funktioniert SSH

Wie jede Netzwerkanwendung verwendet SSH zwei Komponenten:

  • SSH-Client ist eine Anwendung, die Sie auf dem Computer installieren, mit dem Sie eine Verbindung zum Linux-basierten Computer des Netzwerks herstellen. Der SSH-Client stellt eine verschlüsselte Verbindung zwischen Ihrem Computer und dem Remote-Server her.
  • SSH-Server ist eine Serveranwendung, die auf TCP/IP-Port 22 auf die Clientverbindungen wartet. Wenn der Client die richtigen Anmeldeinformationen bereitgestellt hat, erstellt der SSH-Server eine neue Benutzersitzung und ermöglicht Ihnen, Remote-Befehle auszuführen.

SSH-Authentifizierung

Mit SSH können Sie mehrere verschiedene Authentifizierungsmethoden verwenden. Die am weitesten verbreiteten sind:

  • Passwortauthentifizierung – Sie werden nach dem Benutzernamen und dem Passwort gefragt, um Zugriff auf den Remote-Host zu erhalten.
  • SSH-schlüsselbasierte Authentifizierung – Sie verwenden öffentliche und private SSH-Schlüssel für die Benutzerauthentifizierung.

SSH-schlüsselbasierte Authentifizierung

Diese Authentifizierungsmethode gilt als sicherer als die Verwendung von Passwörtern. So funktioniert es:

Schlüsselbasierter SSH-Authentifizierungsalgorithmus:

  • Der Client initiiert eine SSH-Verbindung.
  • Der Server sendet eine zufällige Nachricht zurück.
  • Der Client verschlüsselt die empfangene Nachricht mit einem privaten SSH-Schlüssel und sendet es an den Server zurück.
  • Der Server entschlüsselt die Nachricht des Clients mit einem öffentlichen SSH-Schlüssel . Bei gleicher Nachricht gewährt der Server Zugriff.

Die Verwendung der Kennwortauthentifizierung in SSH ist nicht sicher. Wenn Sie immer noch die Passwortauthentifizierung verwenden, müssen Sie sie so schnell wie möglich auf SSH-schlüsselbasierte Authentifizierung ändern.

So installieren Sie einen SSH-Client

In den meisten Linux-Systemen und macOS ist der SSH-Server standardmäßig bereits installiert und steht Ihnen zur Verfügung. Wenn Sie jedoch mit Linux in Ihrer virtuellen Maschine spielen, müssen Sie es möglicherweise installieren.

Ubuntu

Für Deb-basierte Linux-Distributionen können Sie den SSH-Client mit den folgenden Befehlen installieren:

sudo apt-get update
sudo apt-get -y install openssh-client

CentOS, Fedora, RedHat

Für Yum-basierte Linux-Distributionen können Sie den SSH-Client mit den folgenden Befehlen installieren:

sudo yum -y install openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd

Windows

Für das Windows-Betriebssystem wurde PuTTY zu einem de-facto-Standard-SSH-Client. Um es zu installieren, laden Sie das MSI-Installationsprogramm über den obigen Link herunter und befolgen Sie die Anweisungen unter How to Install PuTTY on Windows.

Hier ist der automatisierte Weg mit Chocolatey. Öffnen Sie die PowerShell-Konsole im „Als Administrator ausführen“-Modus) und führen Sie die folgenden Befehle aus:

Set-ExecutionPolicy RemoteSigned

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

choco install putty -y

So installieren Sie einen SSH-Server

In den meisten Linux-Systemen und macOS ist der SSH-Client standardmäßig bereits installiert und steht Ihnen zur Verfügung. Wenn Sie jedoch mit Linux in Ihrer virtuellen Maschine spielen, müssen Sie es möglicherweise installieren.

SSH-Server – Ubuntu

Für Deb-basierte Linux-Distributionen können Sie den SSH-Client mit den folgenden Befehlen installieren:

sudo apt-get update
sudo apt-get -y install openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd

SSH-Server – CentOS, Fedora, RedHat

Für Yum-basierte Linux-Distributionen können Sie den SSH-Client mit den folgenden Befehlen installieren:

sudo yum -y install openssh
sudo systemctl enable sshd
sudo systemctl start sshd

SSH-Server – Windows

SSH-Server kann nicht unter Windows installiert werden. In der Windows-Welt müssen Sie Remote Desktop und WinRM verwenden, um Remote-Windows-Server zu steuern.

SSH-Schlüssel erstellen

Sobald Sie den SSH-Client haben, können Sie private und öffentliche SSH-Schlüssel erstellen, die für die SSH-schlüsselbasierte Authentifizierung verwendet werden. Um einen SSH-Schlüssel zu erstellen, führen Sie den folgenden Befehl im Terminal aus:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Dieser Befehl erstellt ein 4-KB-RSA-Schlüsselpaar:

  • ~/.ssh/id_rsa – Privater SSH-Schlüssel.
  • ~/.ssh/id_rsa.pub – Öffentlicher SSH-Schlüssel.

Wichtig: Die private SSH-Schlüsseldatei darf niemals jemandem gezeigt oder gesendet werden.

SSH-schlüsselbasierte Authentifizierung einrichten

Um die schlüsselbasierte SSH-Authentifizierung auf dem Server einzurichten, müssen Sie die folgenden Schritte ausführen:

  • Melden Sie sich beim Server an.
  • Gehen Sie zum Home-Verzeichnis des Benutzers.
  • Datei bearbeiten ~/.ssh/authorized_keys und fügen Sie den Inhalt des öffentlichen Schlüssels ein dort ablegen.
  • Änderungen speichern.

~/.ssh/authorized_keys kann so viele öffentliche Schlüsseldateien enthalten, wie Sie benötigen. So können sich viele verschiedene Personen mit demselben Anmeldenamen, aber ihren privaten Schlüsseldateien mit dem Server verbinden.

So stellen Sie eine Verbindung mit SSH her

Sie können mit einem SSH-Client eine Verbindung zu einem Remote-Linux-Server herstellen, indem Sie den folgenden Befehl eingeben:

ssh remote_username@host_ip_address

Verwenden Sie verschiedene SSH-Schlüssel für verschiedene Server

Es ist eine weit verbreitete Situation, dass Sie möglicherweise verschiedene private SSH-Schlüsseldateien verwenden müssen, um auf verschiedene Server zuzugreifen. Es gibt mehrere Möglichkeiten, wie Sie dies tun können.

SSH-Key-In-Verbindungsbefehl angeben

Um einen erforderlichen privaten Schlüssel als Teil des SSH-Verbindungsbefehls anzugeben, verwenden Sie -i Flagge:

ssh -i ~/.ssh/another_private_key remote_username@host_ip_address

Einen SSH-Agenten verwenden

Wenn Sie nicht zu viele private Schlüssel haben, können Sie einen SSH-Agenten verwenden.

SSH Agent ist ein Programm, das Ihren privaten SSH-Schlüssel in den Speicher lädt und ihn verwendet, um die SSH-Authentifizierung zu bestehen.

Linux

Starten Sie den ssh-Agenten im Hintergrund:

eval "$(ssh-agent -s)"

Verwenden Sie die folgenden Befehle, um Ihre SSH-Schlüssel zum Agenten hinzuzufügen:

ssh-add -K ~/.ssh/id_rsa
ssh-add -K ~/.ssh/another_private_key

Windows

Die PuTTY-Distribution enthält Pagent, das sich in der Taskleiste befindet und dieselbe Rolle spielt. Klicken Sie mit der rechten Maustaste auf Pagent und fügen Sie Ihren SSH-Schlüssel hinzu.

Jetzt verwendet der SSH-Client nacheinander alle geladenen privaten Schlüssel, um die Authentifizierung während der SSH-Verbindung zu bestehen.

SSH-Konfigurationsdatei

Eine weitere nützliche Methode zum Konfigurieren von SSH-Client-Parametern ist die Verwendung von ~/.ssh/config Datei.

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa
Host exceptional.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/another_private_key

Im obigen Beispiel verwenden wir den Standard ~/.ssh/id_rsa private Schlüsseldatei für alle Server, mit Ausnahme von exceptional.com Server. Für exceptional.com Server verwenden wir ~/.ssh/another_private_key Datei.

SSH-Agent und Schlüsselweiterleitung

Eine weitere beliebte SSH-Funktion, die ich täglich verwende, ist die SSH-Schlüsselweiterleitung. Es ermöglicht Ihnen, Ihre lokalen SSH-Schlüssel zu verwenden, um sich mit verschiedenen Servern zu verbinden.

Sie können die SSH-Schlüsselweiterleitung während der Ausführung des SSH-Clients aktivieren, indem Sie -T angeben Flagge:

ssh -T remote_username@host_ip_address

Sie können diese Konfiguration auch dauerhaft unter ~/.ssh/config aktivieren Datei, indem Sie ForwardAgent yes angeben :

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa
  ForwardAgent yes

SSH-Portweiterleitung

Mit dem SSH-Protokoll können Sie nicht nur die SSH-Agent-Kommunikation über einen sicheren SSH-Kanal weiterleiten, sondern jeglichen TCP-Datenverkehr.

Wenn Sie UDP-Datenverkehr weiterleiten müssen, verwenden Sie nc in Kombination mit SSH.

Es gibt zwei Arten von Portweiterleitungsoptionen.

Lokale Portweiterleitung

Der beste Weg, die lokale SSH-Portweiterleitung zu erklären, ist, sich das folgende Diagramm anzusehen.

In diesem Diagramm der Jump Host Der Server hat eine private Verbindung zum Amazon RDS PostgreSQL-Server.

Der Kunde Laptop kann sich mit dem Jump Host-Server verbinden mit dem SSH-Protokoll.

Der Eigentümer des Client Laptop sucht nach einer Möglichkeit, eine Verbindung zur Amazon RDS-Instanz herzustellen .

Die lokale SSH-Portweiterleitungsfunktion ermöglicht das Binden eines Ports auf dem Client Laptop. Der Datenverkehr vom gebundenen Port wird über den Jump Host weitergeleitet Server zu einer Amazon RDS-Instanz .

Als Ergebnis müssen Sie sich vom Client aus mit der RDS-Instanz verbinden Laptop, müssen Sie pgsql konfigurieren am Laptop, um sich mit localhost:15432 zu verbinden .

So müssen Sie eine SSH-Verbindung zum Jump Host herstellen vom Linux- oder macOS-Client Laptop:

ssh -L 127.0.0.1:15432:rds-endpoint-url:5432 ec2-user@jump_host_ip

Wenn Sie PuTTY verwenden, müssen Sie Änderungen an Verbindungen vornehmen – SSH – Tunnel bevor Sie sich mit dem Jump-Host verbinden.

Remote-Portweiterleitung

Die SSH-Remote-Portweiterleitung ist eine etwas aufregendere Funktion, die das gegenteilige Problem löst. Es ermöglicht Ihnen, den Port auf dem Remote-SSH-Server zu binden und den an diesen Port kommenden Datenverkehr an die Netzwerke hinter dem SSH-Client-Host weiterzuleiten.

Hier ist ein Beispiel.

In unserem Beispiel haben wir einen isolierten Server , der keinen Zugriff auf das Internet hat, und dem Client Laptop, mit dem wir eine Verbindung zum Jump Host herstellen .

Datenverkehr zwischen Jump Host und Isolierter Server ist nicht eingeschränkt.

Wir müssen den Isolierten Server zulassen um sich mit dem Internet zu verbinden. Wie können wir das tun?

Beispielsweise können wir einen Docker-Container mit Squid-Proxy auf dem Client-Laptop auf Port 8080 starten. Dann können wir eine Verbindung zu Jump Host herstellen mit SSH. Die Remote-Portweiterleitungsfunktion besteht darin, Port 8081 zu binden auf dem Jump Host um Traffic an den Client weiterzuleiten Laptop-Port 8080 .

Als Ergebnis wird der Isolierte Server in der Lage sein, http://jump_host_ip:8081 zu verwenden als Proxy-Server.

So aktivieren Sie die Remote-Portweiterleitung während der SSH-Verbindung unter Linux oder macOS:

ssh -R 8081:localhost:8080 ec2-user@jump_host_ip

Für PuTTY- und Windows-Hosts:

Zusammenfassung

In diesem Artikel habe ich viele nützliche SSH-Funktionen behandelt, die ich in meiner täglichen Arbeit verwende. Ich hoffe, Sie werden sie auch verwenden. Wenn etwas nicht klar ist, kontaktieren Sie mich bitte im Kommentarbereich unten. Ich helfe Ihnen gerne weiter.

Wenn Sie diesen Artikel nützlich fanden, können Sie mir gerne helfen, ihn in der Welt zu verbreiten!


Linux
  1. Was ist VPS-Hosting? Alles, was Sie über Virtual Private Server wissen müssen

  2. 20 Beispiele für OpenSSL-Befehle, die Sie kennen müssen

  3. [Linux]:Die 12 wichtigsten Sicherheitsfunktionen, die im SSH-Server aktiviert werden müssen!

  4. Was Sie über Ubuntu-Server wissen müssen

  5. Können Sie mehr als eine ~/.ssh/config-Datei haben?

20 wichtige Dinge, die Sie wissen sollten, wenn Sie sich auf einem Nginx-Webserver befinden

Alles, was Sie über Linux Ubuntu Server wissen müssen

Alles, was Sie über Linux OpenSSH Server wissen müssen

CentOS vs. Ubuntu:Diese 15 grundlegenden Fakten müssen Sie kennen

Top 50+ Linux-Befehle, die Sie kennen MÜSSEN

Top 10 der besten Linux-Docks, die Sie 2020 ausprobieren MÜSSEN