SSH - Erklärung, Login und Anwendung
Inhaltsverzeichnis:
- OpenSSH-Client installieren
- OpenSSH-Client unter Linux installieren
- OpenSSH unter Ubuntu und Debian installieren
- OpenSSH unter CentOS und Fedora installieren
- OpenSSH-Client unter Windows 10 installieren
- OpenSSH Client unter macOS installieren
- So verwenden Sie den Befehl
ssh - SSH-Konfigurationsdatei
- Port-Weiterleitung
- Lokale Portweiterleitung
- Remote-Port-Weiterleitung
- Dynamische Portweiterleitung
- Fazit
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 stellt eine sichere Verbindung zum SSH-Server auf einem Remotecomputer her. Über die verschlüsselte Verbindung können Befehle auf dem Server, X11-Tunneling, Portweiterleitung usw. ausgeführt werden.
Es gibt eine Reihe von kostenlosen und kommerziellen SSH-Clients, wobei OpenSSH der am häufigsten verwendete Client ist. Es ist auf allen wichtigen Plattformen verfügbar, einschließlich Linux, OpenBSD, Windows, macOS und anderen.
Wir werden erklären, wie Sie sich mit dem OpenSSH-Befehlszeilen-Client (
ssh
) bei einem Remote-Computer anmelden und Befehle ausführen oder andere Vorgänge ausführen.
OpenSSH-Client installieren
Das OpenSSH-Client-Programm heißt
ssh
und kann vom Terminal aus aufgerufen werden. Das OpenSSH-Clientpaket enthält auch andere SSH-Dienstprogramme wie
scp
und
sftp
, die neben dem Befehl
ssh
installiert werden.
OpenSSH-Client unter Linux installieren
Der OpenSSH-Client ist auf den meisten Linux-Distributionen standardmäßig vorinstalliert. Wenn auf Ihrem System der ssh-Client nicht installiert ist, können Sie ihn mit dem Paketmanager Ihrer Distribution installieren.
OpenSSH unter Ubuntu und Debian installieren
sudo apt update
sudo apt install openssh-client
OpenSSH unter CentOS und Fedora installieren
sudo dnf install openssh-clients
OpenSSH-Client unter Windows 10 installieren
Die meisten Windows-Benutzer verwenden Putty, um über SSH eine Verbindung zu einem Remotecomputer herzustellen. Die neuesten Versionen von Windows 10 enthalten jedoch einen OpenSSH-Client und -Server. Beide Pakete können über die GUI oder PowerShell installiert werden.
Geben Sie den folgenden Befehl ein, um den genauen Namen des OpenSSH-Pakets zu ermitteln:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Der Befehl sollte ungefähr so aussehen:
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 ihn, indem Sie Folgendes ausführen:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Bei Erfolg sieht die Ausgabe so aus:
Path: Online: True RestartNeeded: False
OpenSSH Client unter macOS installieren
Im Lieferumfang von macOS ist standardmäßig der OpenSSH-Client installiert.
So verwenden Sie den Befehl
ssh
Die folgenden Voraussetzungen müssen erfüllt sein, um sich über SSH bei einem Remotecomputer anmelden zu können:
- Auf dem Remotecomputer muss ein SSH-Server ausgeführt werden. Der SSH-Port muss in der Firewall des Remotecomputers geöffnet sein. Sie müssen den Benutzernamen und das Kennwort des Remotekontos kennen. Das Konto muss über die erforderlichen Berechtigungen für die Remote-Anmeldung verfügen.
Die grundlegende Syntax des Befehls
ssh
lautet wie folgt:
ssh:HOST
Um den Befehl
ssh
öffnen Sie Ihr Terminal oder Ihre PowerShell und geben Sie
ssh
gefolgt vom Namen des Remote-Hosts ein:
ssh ssh.linuxize.com
Wenn Sie zum ersten Mal über SSH eine Verbindung zu einem Remotecomputer herstellen, wird die folgende Meldung angezeigt.
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 verfügt über einen eindeutigen Fingerabdruck, der in der Datei
~/.ssh/known_hosts
gespeichert ist.
Geben Sie
yes
, um den Remote-Fingerabdruck zu speichern, und Sie werden aufgefordert, Ihr Kennwort einzugeben.
Warning: Permanently added 'ssh.linuxize.com' (ECDSA) to the list of known hosts. [email protected]'s password:
Sobald Sie das Kennwort eingegeben haben, werden Sie auf dem Remote-Computer angemeldet.
Wenn der Benutzername nicht angegeben wird, verwendet der Befehl
ssh
den aktuellen Systemanmeldenamen.
Geben Sie den Benutzernamen und den Host im folgenden Format an, um sich als ein anderer Benutzer anzumelden:
ssh username@hostname
Der Benutzername kann auch mit der Option
-l
angegeben werden:
ssh -l username hostname
Wenn kein Port angegeben ist, versucht der SSH-Client standardmäßig, über Port 22 eine Verbindung zum Remoteserver herzustellen. Auf einigen Servern ändern Administratoren den Standard-SSH-Port, um dem Server eine zusätzliche Sicherheitsebene hinzuzufügen, indem das Risiko von verringert wird automatisierte Angriffe.
Um eine Verbindung zu einem nicht standardmäßigen Port
-p
, geben Sie den Port mit der Option
-p
an:
ssh -p 5522 username@hostname
ssh -v username@hostname
Verwenden Sie
-vv
oder
-vvv
um die Ausführlichkeit zu
-vvv
.
Der Befehl
ssh
akzeptiert eine Reihe von Optionen.
Eine vollständige Liste aller Optionen finden Sie in der
ssh
Manpage, indem Sie
man ssh
in Ihr Terminal eingeben.
SSH-Konfigurationsdatei
Der OpenSSH-Client liest die in der benutzerspezifischen Konfigurationsdatei (
~/.ssh/config
) festgelegten Optionen. In dieser Datei können Sie verschiedene SSH-Optionen für jeden Remote-Computer speichern, zu dem Sie eine Verbindung herstellen.
Eine Beispiel-SSH-Konfiguration ist unten dargestellt:
Host dev HostName dev.linuxize.com User mike Port 4422
Wenn Sie den ssh-Client durch Eingabe von
ssh dev
aufrufen, liest der Befehl die Datei
~/.ssh/config
und verwendet die für den dev-Host angegebenen Verbindungsdetails. In diesem Beispiel entspricht
ssh dev
dem Folgenden:
ssh -p 4422 [email protected]
Weitere Informationen finden Sie im Artikel zur SSH-Konfigurationsdatei.
Authentifizierung mit öffentlichem Schlüssel
Das SSH-Protokoll unterstützt verschiedene Authentifizierungsmechanismen.
Mit dem auf öffentlichen Schlüsseln basierenden Authentifizierungsmechanismus können Sie sich beim Remoteserver anmelden, ohne Ihr Kennwort eingeben zu müssen.
Diese Methode generiert ein Paar kryptografischer Schlüssel, die für die Authentifizierung verwendet werden. Der private Schlüssel wird auf dem Clientgerät gespeichert und der öffentliche Schlüssel wird an jeden Remoteserver übertragen, auf dem Sie sich anmelden möchten. Der Remoteserver muss so konfiguriert sein, dass er die Schlüsselauthentifizierung akzeptiert.
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Sie werden aufgefordert, eine sichere Passphrase einzugeben. Ob Sie eine Passphrase verwenden möchten, liegt ganz bei Ihnen.
Sobald Sie Ihr Schlüsselpaar haben, kopieren Sie den öffentlichen Schlüssel auf den Remote-Server:
ssh-copy-id username@hostname
Geben Sie das Kennwort des Remotebenutzers ein, und der öffentliche Schlüssel wird an die Datei
authorized_keys
Remotebenutzers angehängt.
Nach dem Hochladen des Schlüssels können Sie sich beim Remote-Server anmelden, ohne zur Eingabe eines Kennworts aufgefordert zu werden.
Durch Festlegen einer schlüsselbasierten Authentifizierung können Sie den Anmeldevorgang vereinfachen und die allgemeine Serversicherheit erhöhen.
Port-Weiterleitung
SSH-Tunneling oder SSH-Portweiterleitung ist eine Methode zum Herstellen einer verschlüsselten SSH-Verbindung zwischen einem Client und einem Server, über die Service-Ports weitergeleitet werden können.
Die SSH-Weiterleitung ist nützlich, um Netzwerkdaten von Diensten zu transportieren, die ein unverschlüsseltes Protokoll verwenden, z. B. VNC oder FTP, auf geografisch eingeschrä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 die Option
-L
an den
ssh
Client:
ssh -L LOCAL_PORT:DESTINATION_HOST:DESTINATION_PORT -N -f username@hostname
Die Option -f weist den Befehl
ssh
an, im Hintergrund ausgeführt zu werden und
-N
keinen Remote-Befehl auszuführen.
Remote-Port-Weiterleitung
Remote Port Forwarding ist das Gegenteil von Local Port Forwarding. Es leitet einen Port vom Serverhost an den Clienthost und dann an den Zielhostport weiter.
Die Option
-L
weist
ssh
an, eine Remote-Port-Weiterleitung zu erstellen:
ssh -R REMOTE_PORT:DESTINATION:DESTINATION_PORT -N -f username@hostname
Dynamische Portweiterleitung
Durch die dynamische Portweiterleitung wird ein SOCKS-Proxyserver erstellt, der die Kommunikation über eine Reihe von Ports ermöglicht.
Um eine dynamische Portweiterleitung (SOCKS) zu erstellen, übergeben Sie die Option
-D
an den ssh-Client:
ssh -D LOCAL_PORT -N -f username@hostname
Ausführliche Informationen und schrittweise Anleitungen finden Sie im Artikel Einrichten des SSH-Tunnels (Portweiterleitung).
Fazit
Um eine Verbindung zu einem Remote-Server über SSH herzustellen, verwenden Sie den Befehl
ssh
gefolgt von dem Remote-Benutzernamen und dem Hostnamen (
ssh username@hostname
).
Die Verwendung des Befehls
ssh
ist für die Verwaltung von Remoteservern von entscheidender Bedeutung.
Freie SSH-Clients für Windows 10/8/7
Secure Shell oder SSH ist ein Programm, mit dem Sie sich bei einem Remote-Rechner anmelden und ausführen können Befehle und Dateien verschieben. Überprüfen Sie diese kostenlose SSH-Client-Software für Windows.
So richten Sie SSH-Tunneling ein, um eine Firewall zu umgehen
Eine Firewall ist eine gute Sache, aber wenn sie Sie davon abhält, etwas zu tun, ist SSH-Tunneling eine gute Option, die Sie erkunden können.
So ändern Sie den SSH-Port unter Linux
Standardmäßig überwacht SSH Port 22. Durch Ändern des Standard-SSH-Ports wird Ihrem Server eine zusätzliche Sicherheitsebene hinzugefügt, indem das Risiko automatisierter Angriffe verringert wird. In diesem Tutorial wird erklärt, wie Sie den Standard-SSH-Port unter Linux ändern.







