Der ultimative Leitfaden für SSH - Einrichten von SSH-Schlüsseln

Willkommen zu unserer ultimativen Anleitung zum Einrichten von SSH-Schlüsseln (Secure Shell). Dieses Tutorial führt Sie durch die Grundlagen des Erstellens von SSH-Schlüsseln und durch die Verwaltung mehrerer Schlüssel und Schlüsselpaare.

Erstellen Sie ein neues SSH-Schlüsselpaar

Öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus:

ssh-keygen

Sie sehen den folgenden Text:

Generating public/private rsa key pair. Enter file in which to save the key (/home/username/.ssh/id_rsa):

Drücken Sie die Eingabetaste, um Ihre Schlüssel im Standardverzeichnis zu speichern /home/username/.ssh.

Dann werden Sie aufgefordert, ein Passwort einzugeben:

Enter passphrase (empty for no passphrase):

Es wird empfohlen, hier ein Passwort einzugeben, um zusätzliche Sicherheit zu gewährleisten. Durch Festlegen eines Kennworts können Sie den unbefugten Zugriff auf Ihre Server und Konten verhindern, falls jemand jemals Ihren privaten SSH-Schlüssel oder Ihren Computer in die Hände bekommt.

Nach Eingabe und Bestätigung Ihres Passworts wird Folgendes angezeigt:

Your identification has been saved in /home/username/.ssh/id_rsa. Your public key has been saved in /home/username/.ssh/id_rsa.pub. The key fingerprint is: SHA256:/qRoWhRcIBTw0D4KpTUyK6YepyL6RQ2CQrtWsaicCb4 [email protected] The key's randomart image is: +---[RSA 2048]----+ | .o=+.... | |+.*o+o . | |+X.=o o | |@.=.oo . | |=O ...o S | |o.oo . . | |.E+ . . . . | |oo . ... + | |=.. .o. . . | +----[SHA256]-----+

Sie haben jetzt ein öffentliches und ein privates SSH-Schlüsselpaar, mit dem Sie auf Remoteserver zugreifen und die Authentifizierung für Befehlszeilenprogramme wie Git durchführen können.

Mehrere SSH-Schlüssel verwalten

Obwohl es als gute Praxis angesehen wird, nur ein öffentlich-privates Schlüsselpaar pro Gerät zu haben, müssen Sie manchmal mehrere Schlüssel verwenden oder Sie haben unorthodoxe Schlüsselnamen. Beispielsweise verwenden Sie möglicherweise ein SSH-Schlüsselpaar für die Arbeit an internen Projekten Ihres Unternehmens, verwenden jedoch möglicherweise einen anderen Schlüssel für den Zugriff auf die Server eines Clients. Darüber hinaus verwenden Sie möglicherweise ein anderes Schlüsselpaar für den Zugriff auf Ihren eigenen privaten Server.

Das Verwalten von SSH-Schlüsseln kann umständlich werden, sobald Sie einen zweiten Schlüssel verwenden müssen. Normalerweise ssh-addspeichern Sie Ihre Schlüssel in ssh-agentund geben das Kennwort für jeden Schlüssel ein. Das Problem ist, dass Sie dies jedes Mal tun müssen, wenn Sie Ihren Computer neu starten, was schnell langweilig werden kann.

Eine bessere Lösung besteht darin, das Hinzufügen von Schlüsseln zu automatisieren, Kennwörter zu speichern und anzugeben, welcher Schlüssel beim Zugriff auf bestimmte Server verwendet werden soll.

SSH config

Geben Sie SSH ein config, eine Konfigurationsdatei pro Benutzer für die SSH-Kommunikation. Erstellen Sie eine neue Datei: ~/.ssh/configund öffnen Sie sie zur Bearbeitung:

nano ~/.ssh/config

Verwalten eines benutzerdefinierten benannten SSH-Schlüssels

Das erste, was wir mit dieser configDatei lösen werden , ist zu vermeiden, dass Sie benutzerdefinierte SSH-Schlüssel mit hinzufügen müssen ssh-add. Angenommen, Ihr privater SSH-Schlüssel heißt benannt ~/.ssh/id_rsa, fügen Sie der configDatei Folgendes hinzu :

Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes

Stellen Sie als Nächstes sicher, dass dies ~/.ssh/id_rsanicht der Fall ist, ssh-agentindem Sie ein anderes Terminal öffnen und den folgenden Befehl ausführen:

ssh-add -D

Dieser Befehl entfernt alle Schlüssel aus der aktuell aktiven ssh-agentSitzung.

Wenn Sie nun versuchen, ein GitHub-Repository zu schließen, verwendet Ihre configDatei den Schlüssel unter ~/.ssh/ida_rsa.

Hier sind einige andere nützliche Konfigurationsbeispiele:

Host bitbucket-corporate HostName bitbucket.org User git IdentityFile ~/.ssh/id_rsa_corp IdentitiesOnly yes

Jetzt können Sie verwenden git clone [email protected]:company/project.git

Host bitbucket-personal HostName bitbucket.org User git IdentityFile ~/.ssh/id_rsa_personal IdentitiesOnly yes

Jetzt können Sie verwenden git clone [email protected]:username/other-pi-project.git

Host myserver HostName ssh.username.com Port 1111 IdentityFile ~/.ssh/id_rsa_personal IdentitiesOnly yes User username IdentitiesOnly yes

Jetzt können Sie mit SSH in Ihren Server ssh myserver. Sie müssen nicht mehr jedes Mal, wenn Sie SSH auf Ihrem privaten Server ausführen, einen Port und einen Benutzernamen eingeben.

Passwortverwaltung

Das letzte Puzzleteil ist die Verwaltung von Passwörtern. Die Eingabe eines Kennworts kann bei jeder Initialisierung einer SSH-Verbindung sehr mühsam werden. Um dies zu umgehen, können wir die mit macOS und verschiedenen Linux-Distributionen gelieferte Passwortverwaltungssoftware verwenden.

Für dieses Tutorial verwenden wir das Keychain Access-Programm von macOS. Fügen Sie zunächst Ihren Schlüssel zum Schlüsselbundzugriff hinzu, indem Sie die -KOption an den ssh-addBefehl übergeben:

ssh-add -K ~/.ssh/id_rsa_whatever

Jetzt können Sie Ihren SSH-Schlüssel in Keychain Access sehen:

Schlüsselbundzugang

Aber wenn Sie die Schlüssel entfernen ssh-agentmit ssh-add -Doder Ihren Computer neu starten, werden Sie wieder für Passwort gefragt, wenn Sie versuchen , SSH zu verwenden. Es stellt sich heraus, dass es noch einen Reifen gibt, durch den man springen kann. Öffnen Sie Ihre SSH- configDatei, indem nano ~/.ssh/configSie Folgendes ausführen und hinzufügen:

Host * AddKeysToAgent yes UseKeychain yes

Damit sshwird bei jeder Ausführung in Keychain Access nach Schlüsseln gesucht. Wenn eines gefunden wird, werden Sie nicht mehr zur Eingabe eines Kennworts aufgefordert. Bei ssh-agentjedem Neustart des Computers werden automatisch Schlüssel hinzugefügt .

Jetzt, da Sie die Grundlagen zum Erstellen neuer SSH-Schlüssel und zum Verwalten mehrerer Schlüssel kennen, können Sie sshnach Herzenslust loslegen!