SSH ist ein sicheres Protokoll, das als primäres Mittel zur Fernverbindung mit Linux-Servern verwendet wird. Es bietet eine textbasierte Schnittstelle, indem es eine Remote-Shell erzeugt. Nach dem Verbinden werden alle Befehle, die Sie in Ihrem lokalen Terminal eingeben, an den Remote-Server gesendet und dort ausgeführt.
Authentifizierung
Clients authentifizieren sich im Allgemeinen entweder mit Passwörtern oder SSH-Schlüsseln. Passwörter sind weniger sicher, daher werden SSH-Schlüssel immer empfohlen.
Um sich mit SSH-Schlüsseln zu authentifizieren, muss ein Benutzer ein SSH-Schlüsselpaar auf seinem lokalen Computer haben. Auf dem Remote-Server muss der öffentliche Schlüssel in eine Datei im Home-Verzeichnis des Benutzers unter ~/.ssh/authorized_keys
kopiert werden . Diese Datei enthält eine Liste öffentlicher Schlüssel, einen pro Zeile, die berechtigt sind, sich bei diesem Konto anzumelden.
Generieren eines SSH-Schlüsselpaars
Pub/private Schlüsselkombination generieren
ssh-keygen
# With options (Larger Number of Bits 4096 and file name)
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_citizix
# Explicit comment
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_citizix -C citizix_key
Die obigen Befehle generieren ein RSA-SSH-Schlüsselpaar. Wenn der Dateispeicherort nicht angegeben ist, befinden sie sich in .ssh
verstecktes Verzeichnis im Home-Verzeichnis Ihres Benutzers. Die Standarddateien sind:
~/.ssh/id_rsa
:Der private Schlüssel. TEILEN SIE DIESE DATEI NICHT!~/.ssh/id_rsa.pub
:Der zugehörige öffentliche Schlüssel. Dies kann ohne Folgen frei geteilt werden.
Entfernen oder Ändern der Passphrase auf einem privaten Schlüssel
Wenn Sie eine Passphrase für Ihren privaten Schlüssel generiert haben und diese ändern oder entfernen möchten, verwenden Sie die folgenden Befehle:
ssh-keygen -p
ssh-keygen -p -f ~/.ssh/id_citizix
Geben Sie die alte Passphrase ein, die Sie ändern möchten. Sie werden dann zur Eingabe einer neuen Passphrase aufgefordert, oder Sie können einfach die Eingabetaste drücken, um sie leer zu lassen.
SSH-Schlüssel-Fingerabdruck prüfen
Jedes SSH-Schlüsselpaar hat einen einzigen kryptografischen „Fingerabdruck“, der zur eindeutigen Identifizierung der Schlüssel verwendet werden kann. Um den Fingerabdruck eines SSH-Schlüssels herauszufinden, geben Sie Folgendes ein:
ssh-keygen -l
ssh-keygen -l -f ~/.ssh/id_citizix
Kopieren Ihres öffentlichen SSH-Schlüssels auf einen Server
Das Kopieren des öffentlichen Schlüssels auf einen entfernten Server ermöglicht die Anmeldung ohne Passwort:
# This will prompt for a password
ssh-copy-id [email protected]_host
Nachdem Sie das Passwort eingegeben haben, wird der Inhalt Ihres Schlüssels ~/.ssh/id_rsa.pub an das Ende der Datei ~/.ssh/authorized_keys des Benutzerkontos angehängt. Sie können sich jetzt ohne Passwort anmelden:ssh [email protected]_host
Kopieren Ihres öffentlichen SSH-Schlüssels auf einen Server ohne SSH-Copy-ID
Wenn Sie das Dienstprogramm ssh-copy-id nicht zur Verfügung haben, aber dennoch passwortbasierten SSH-Zugriff auf den Remote-Server haben, können Sie den Inhalt Ihres öffentlichen Schlüssels auf andere Weise kopieren.
-
Kopieren Sie den Inhalt an das Ende des
~/.ssh/authorized_keys
des Remote-Servers Datei. -
Sie können den Inhalt des Schlüssels ausgeben und an den ssh-Befehl weiterleiten. An
~/.ssh/authorized_keys
anhängen Datei.cat ~/.ssh/id_rsa.pub | ssh [email protected]_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Mehr Hacks
Öffentlichen SSH-Schlüssel aus einem privaten Schlüssel generieren:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
Ausführen eines einzelnen Befehls auf einem Remote-Server
ssh [email protected]_host command_to_run
Anmeldung bei einem Server mit einem anderen Port
ssh -p port_num [email protected]_host
Verwendung einer Konfigurationsdatei:
# File ~/.ssh/config
Host remote_alias
HostName remote_host
Port port_num
Hinzufügen Ihrer SSH-Schlüssel zu einem SSH-Agenten, um die Eingabe der Passphrase zu vermeiden
Wenn Sie eine Passphrase auf Ihrem privaten SSH-Schlüssel haben, werden Sie jedes Mal aufgefordert, die Passphrase einzugeben, wenn Sie damit eine Verbindung zu einem Remote-Host herstellen.
Um dies nicht wiederholt tun zu müssen, können Sie einen SSH-Agenten ausführen. Dieses kleine Dienstprogramm speichert Ihren privaten Schlüssel, nachdem Sie die Passphrase zum ersten Mal eingegeben haben. Es ist für die Dauer Ihrer Terminalsitzung verfügbar, sodass Sie sich in Zukunft ohne erneute Eingabe der Passphrase verbinden können.
Um den SSH-Agenten zu starten, geben Sie Folgendes in Ihre lokale Terminalsitzung ein:
eval $(ssh-agent)
Fügen Sie nun Ihren privaten Schlüssel zum Agenten hinzu, damit dieser Ihren Schlüssel verwalten kann:
ssh-add
ssh-add -f ~/.ssh/id_citizix
Sie müssen Ihre Passphrase eingeben (falls eine festgelegt ist). Anschließend wird Ihre Identitätsdatei zum Agenten hinzugefügt, sodass Sie sich mit Ihrem Schlüssel anmelden können, ohne die Passphrase erneut eingeben zu müssen.
Weiterleitung Ihrer SSH-Anmeldeinformationen zur Verwendung auf einem Server
Wenn Sie sich von einem anderen Server aus ohne Passwort mit einem Server verbinden möchten, müssen Sie Ihre SSH-Schlüsselinformationen weiterleiten. Dadurch können Sie sich über den Server, mit dem Sie verbunden sind, bei einem anderen Server authentifizieren, indem Sie die Anmeldeinformationen auf Ihrem lokalen Computer verwenden.
Sie müssen Ihren SSH-Agenten gestartet und Ihren SSH-Schlüssel zum Agenten hinzugefügt haben. Verbinden Sie sich dann mit der Option -A
mit dem ersten Server um Ihre Zugangsdaten für diese Sitzung an den Server weiterzuleiten
ssh -A [email protected]_host