Secure Shell (SSH) ist ein kryptografisches Netzwerkprotokoll, das für eine verschlüsselte Verbindung zwischen einem Client und einem Server verwendet wird. Der SSH-Client erstellt eine sichere Verbindung zum SSH-Server auf einem Remote-Computer. Die verschlüsselte Verbindung kann verwendet werden, um Befehle auf dem Server, X11-Tunneling, Portweiterleitung und mehr auszuführen.
Es gibt eine Reihe von SSH-Clients, sowohl kostenlose als auch kommerzielle, wobei OpenSSH der am weitesten verbreitete Client ist. Es ist auf allen wichtigen Plattformen verfügbar, einschließlich Linux, OpenBSD, Windows und macOS.
In diesem Artikel wird erläutert, wie Sie den OpenSSH-Befehlszeilenclient (ssh
), um sich bei einem Remote-Computer anzumelden und Befehle auszuführen oder andere Vorgänge auszuführen.
Installation des OpenSSH-Clients #
Das OpenSSH-Client-Programm heißt ssh
und kann vom Terminal aus aufgerufen werden. Das OpenSSH-Client-Paket stellt auch andere SSH-Dienstprogramme wie scp
bereit und sftp
die zusammen mit ssh
installiert werden Befehl.
Installieren des OpenSSH-Clients unter Linux #
Der OpenSSH-Client ist standardmäßig auf den meisten Linux-Distributionen vorinstalliert. Wenn auf Ihrem System der SSH-Client nicht installiert ist, können Sie ihn mit dem Paketmanager Ihrer Distribution installieren.
Installieren von OpenSSH auf Ubuntu und Debian #
sudo apt update
sudo apt install openssh-client
Installieren von OpenSSH auf CentOS und Fedora #
sudo dnf install openssh-clients
Installieren des OpenSSH-Clients unter Windows 10 #
Die meisten Windows-Benutzer verwenden Putty, um sich über SSH mit einem Remote-Computer zu verbinden. Die neuesten Versionen von Windows 10 enthalten jedoch einen OpenSSH-Client und -Server. Beide Pakete können über die GUI oder PowerShell installiert werden.
Um den genauen Namen des OpenSSH-Pakets zu finden, geben Sie den folgenden Befehl ein:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Der Befehl sollte etwa so zurückgeben:
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
Sobald Sie den Paketnamen kennen, installieren Sie es, indem Sie Folgendes ausführen:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Bei Erfolg sieht die Ausgabe etwa so aus:
Path :
Online : True
RestartNeeded : False
Installieren des OpenSSH-Clients auf macOS #
macOS wird standardmäßig mit installiertem OpenSSH-Client ausgeliefert.
Verwendung von ssh
Befehl #
Die folgenden Voraussetzungen müssen erfüllt sein, um sich über SSH bei einem Remote-Rechner anmelden zu können:
- Auf dem Remote-Rechner muss ein SSH-Server laufen.
- Der SSH-Port muss in der Firewall des Remote-Computers geöffnet sein.
- Sie müssen den Benutzernamen und das Passwort des Remote-Kontos kennen. Das Konto muss über die entsprechenden Berechtigungen für die Remote-Anmeldung verfügen.
Die grundlegende Syntax von ssh
Befehl lautet wie folgt:
ssh [OPTIONS] [USER@]:HOST
Um den ssh
zu verwenden Befehl, öffnen Sie Ihr Terminal oder PowerShell und geben Sie ssh
ein gefolgt vom Remote-Hostnamen:
ssh ssh.linuxize.com
Wenn Sie sich zum ersten Mal über SSH mit einem Remote-Rechner verbinden, sehen Sie eine Nachricht wie unten.
The authenticity of host 'ssh.linuxize.com (192.168.121.111)' can't be established.
ECDSA key fingerprint is SHA256:Vybt22mVXuNuB5unE++yowF7lgA/9/2bLSiO3qmYWBY.
Are you sure you want to continue connecting (yes/no)?
Jeder Host hat einen eindeutigen Fingerabdruck, der in ~/.ssh/known_hosts
gespeichert ist Datei.
Geben Sie yes
ein um den Remote-Fingerabdruck zu speichern, und Sie werden aufgefordert, Ihr Passwort einzugeben.
Warning: Permanently added 'ssh.linuxize.com' (ECDSA) to the list of known hosts.
[email protected]'s password:
Sobald Sie das Passwort eingegeben haben, werden Sie beim Remote-Rechner angemeldet.
Wenn der Benutzername nicht angegeben wird, wird der ssh
Der Befehl verwendet den aktuellen System-Anmeldenamen.
Um sich als ein anderer Benutzer anzumelden, geben Sie den Benutzernamen und den Host im folgenden Format an:
ssh username@hostname
Der Benutzername kann auch mit dem -l
angegeben werden Möglichkeit:
ssh -l username hostname
Wenn kein Port angegeben ist, versucht der SSH-Client standardmäßig, eine Verbindung zum Remote-Server über Port 22 herzustellen. Auf einigen Servern ändern Administratoren den Standard-SSH-Port, um dem Server eine zusätzliche Sicherheitsebene hinzuzufügen, indem sie das Risiko einer Automatisierung verringern Angriffe.
Um eine Verbindung über einen nicht standardmäßigen Port herzustellen, verwenden Sie -p
Option zur Angabe des Ports:
ssh -p 5522 username@hostname
Wenn Sie Authentifizierungs- oder Verbindungsprobleme haben, verwenden Sie den -v
Option, um ssh
mitzuteilen Debugging-Meldungen drucken:
ssh -v username@hostname
Um die Ausführlichkeit zu erhöhen, verwenden Sie -vv
oder -vvv
.
Die ssh
Der Befehl akzeptiert eine Reihe von Optionen.
Für eine vollständige Liste aller Optionen lesen Sie den ssh
Manpage, indem Sie man ssh
eingeben in Ihrem Terminal.
SSH-Konfigurationsdatei #
Wenn Sie sich täglich über SSH mit mehreren Remote-Systemen verbinden, werden Sie feststellen, dass es schwierig, wenn nicht sogar unmöglich ist, sich alle Remote-IP-Adressen, verschiedene Benutzernamen, nicht standardmäßige Ports und verschiedene Befehlszeilenoptionen zu merken.
Der OpenSSH-Client liest die in der benutzerspezifischen Konfigurationsdatei (~/.ssh/config
). In dieser Datei können Sie verschiedene SSH-Optionen für jeden Remote-Rechner speichern, mit dem Sie sich verbinden.
Eine beispielhafte SSH-Konfiguration ist unten dargestellt:
Host dev
HostName dev.linuxize.com
User mike
Port 4422
Wenn Sie den SSH-Client aufrufen, indem Sie ssh dev
eingeben , liest der Befehl den ~/.ssh/config
-Datei und verwenden Sie die für den Entwicklungshost angegebenen Verbindungsdetails. In diesem Beispiel ssh dev
entspricht dem Folgenden:
ssh -p 4422 [email protected]
Weitere Informationen finden Sie im Artikel über die SSH-Konfigurationsdatei.
Public-Key-Authentifizierung #
Das SSH-Protokoll unterstützt verschiedene Authentifizierungsmechanismen.
Der auf öffentlichen Schlüsseln basierende Authentifizierungsmechanismus ermöglicht es Ihnen, sich beim Remote-Server anzumelden, ohne Ihr Passwort eingeben zu müssen.
Bei dieser Methode wird ein Paar kryptografischer Schlüssel generiert, die zur Authentifizierung verwendet werden. Der private Schlüssel wird auf dem Client-Gerät gespeichert und der öffentliche Schlüssel wird an jeden Remote-Server übertragen, bei dem Sie sich anmelden möchten. Der Remote-Server muss so konfiguriert werden, dass er die Schlüsselauthentifizierung akzeptiert.
Wenn Sie auf Ihrem lokalen Computer noch kein SSH-Schlüsselpaar haben, können Sie eines generieren, indem Sie Folgendes eingeben:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Sie werden aufgefordert, eine sichere Passphrase einzugeben. Ob Sie eine Passphrase verwenden möchten, bleibt Ihnen überlassen.
Sobald Sie Ihr Schlüsselpaar haben, kopieren Sie den öffentlichen Schlüssel auf den Remote-Server:
ssh-copy-id username@hostname
Geben Sie das Passwort des entfernten Benutzers ein, und der öffentliche Schlüssel wird an die authorized_keys
des entfernten Benutzers angehängt Datei.
Sobald der Schlüssel hochgeladen ist, können Sie sich beim Remote-Server anmelden, ohne zur Eingabe eines Passworts aufgefordert zu werden.
Indem Sie eine schlüsselbasierte Authentifizierung festlegen, können Sie den Anmeldevorgang vereinfachen und die allgemeine Serversicherheit erhöhen.
Portweiterleitung #
SSH-Tunneling oder SSH-Portweiterleitung ist eine Methode zum Erstellen einer verschlüsselten SSH-Verbindung zwischen einem Client und einem Server, über die Dienstports weitergeleitet werden können.
Die SSH-Weiterleitung ist nützlich, um Netzwerkdaten von Diensten zu transportieren, die ein unverschlüsseltes Protokoll wie VNC oder FTP verwenden, auf geobeschränkte Inhalte zuzugreifen oder zwischengeschaltete Firewalls zu umgehen. Grundsätzlich können Sie jeden TCP-Port weiterleiten und den Datenverkehr über eine sichere SSH-Verbindung tunneln.
Es gibt drei Arten der SSH-Portweiterleitung:
Lokale Portweiterleitung #
Mit der lokalen Portweiterleitung können Sie eine Verbindung vom Clienthost zum SSH-Serverhost und dann zum Zielhostport weiterleiten.
Um eine lokale Portweiterleitung zu erstellen, übergeben Sie den -L
Option zum ssh
Kunde:
ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION_HOST:DESTINATION_PORT -N -f username@hostname
Die Option -f teilt dem ssh
mit Befehl, der im Hintergrund ausgeführt werden soll, und -N
keinen Fernbefehl auszuführen.
Remote-Portweiterleitung #
Die Remote-Portweiterleitung ist das Gegenteil der lokalen Portweiterleitung. Es leitet einen Port vom Server-Host zum Client-Host und dann zum Ziel-Host-Port weiter.
Das -R
Option teilt ssh
mit So erstellen Sie eine Remote-Portweiterleitung:
ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT -N -f username@hostname
Dynamische Portweiterleitung #
Die dynamische Portweiterleitung erstellt einen SOCKS-Proxyserver, der die Kommunikation über eine Reihe von Ports ermöglicht.
Um eine dynamische Portweiterleitung (SOCKS) zu erstellen, übergeben Sie -D
Option zum ssh-Client:
ssh -D [LOCAL_IP:]LOCAL_PORT -N -f username@hostname
Ausführlichere Informationen und Schritt-für-Schritt-Anleitungen finden Sie im Artikel zum Einrichten von SSH-Tunneling (Port Forwarding).
Schlussfolgerung #
Um sich über SSH mit einem Remote-Server zu verbinden, verwenden Sie den ssh
Befehl gefolgt vom entfernten Benutzernamen und Hostnamen (ssh username@hostname
).
Wissen, wie man ssh
verwendet Der Befehl ist für die Verwaltung von Remote-Servern unerlässlich.
Wenn Sie Fragen haben, hinterlassen Sie bitte unten einen Kommentar.