SSH-Schlüssel zur Authentifizierung eines fernen Hosts erstellen und verwenden
Mit SSH-Schlüsseln können Sie sich bei einem SSH-Server identifizieren, der eine Verschlüsselung mit öffentlichem Schlüssel und Challenge/Response-Verfahren verwendet. Ein unmittelbarer Vorteil dieser Methode gegenüber der Kennwortauthentifizierung liegt darin, dass Sie vom Server authentifiziert werden können, ohne Ihr Kennwort über das Netz senden zu müssen. Sie können diese Methode auch zusammen mit einer Automatisierung verwenden, da sie die unbeaufsichtigte Serverkommunikation zulässt.
SSH-Schlüssel unter Linux generieren
Führen Sie den Befehl ssh-keygen
aus, um einen SSH-Schlüssel auf Ihrem Linux -Server zu generieren. Der Befehl kann Flags verwenden, wenn Sie den Typ des generierten Schlüssels und die Signaturalgorithmen, die zum Generieren des
Schlüssels verwendet werden, anpassen möchten. In diesem Beispiel wird ein Standard-2048-Bit-RSA-Schlüssel ohne Kennphrase generiert. Der Befehl fordert Sie zur Eingabe der Position zum Speichern des Schlüssels (Standardwert ist $HOME/.ssh/)
und einer Kennphrase zum Sichern des SSH-Schlüssels auf.
root@bck2:/etc# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx root@bck2.example.com
The key's randomart image is:
+---[RSA 2048]----+
|. oo*%=+o.. |
|.++.oX+=. . |
|..+ooo=. . |
| E.+. .o. |
| + S..+ |
| . +. = |
| o = o |
| .o+ + |
| +o. |
+----[SHA256]-----+
Öffentlichen Schlüssel auf ferne Hosts kopieren
Für die Authentifizierung mit einem fernen Host mithilfe Ihres öffentlichen SSH-Schlüssels, um den Befehl ssh-copy-id
zu verwenden. Verwenden Sie das Flag -i
, um den öffentlichen Schlüssel anzugeben, der auf den fernen
Host kopiert werden soll.
root@bck2: # ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.176.18.15
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '10.176.18.15 (10.176.18.15)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@10.176.18.15's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@10.176.18.15'"
and check to make sure that only the key(s) you wanted were added.
Der Befehl 'ssh-copy-id' hängt die Schlüssel an die Datei .ssh/authorized_key
des fernen Hosts an.
Testen, ob der Schlüssel richtig kopiert wurde
Stellen Sie eine SSH-Verbindung zum fernen Host her, um zu testen, ob der öffentliche Schlüssel ordnungsgemäß auf den fernen Host kopiert wurde.
root@bck2:/etc# ssh root@10.176.18.15
Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-53-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud
0 packages can be updated.
0 updates are security updates.
Last login: Fri Feb 10 16:51:51 2017 from 169.46.3.91
root@bck1:~#
Sie werden nicht zur Eingabe des Kennworts aufgefordert, wenn Sie eine SSH-Verbindung zum fernen Host herstellen.
SSH-Schlüssel mit Kennphrase
Die Angabe einer Kennphrase für Ihren SSH-Schlüssel bietet eine zusätzliche Sicherheitsebene, kann aber auch Probleme verursachen, wenn Sie automatisierte Scripts ausführen, die den geschützten Schlüssel erfordern.
Der SSH-Agent kann Ihre Schlüssel verwalten. Sie müssen die Kennphrase nur einmal eingeben. Der SSH-Agent speichert Ihren Schlüssel ab und extrahiert ihn, wenn er gebraucht wird. Wenn der SSH-Agent Ihre Schlüssel verwalten soll, setzen Sie den folgenden Befehl ab:
eval $(ssh-agent)
Nachdem das Programm den Befehl 'ssh-add' gestartet hat, um Ihren öffentlichen Schlüssel zum Agenten hinzuzufügen, sucht das Dienstprogramm 'ssh-add' nach Standardnamen, von denen id_rsa
einer ist, und fügt sie zum SSH-Agenten hinzu.
Nach der Eingabe Ihres Kennworts wird der "freigegebene" Schlüssel zusammen mit dem SSH-Agenten gespeichert und kann zur Authentifizierung bei anderen Servern verwendet werden.
root@bck1:~# ssh-add
Enter passphrase for /root/.ssh/id_rsa:
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
root@bck1:~#
Jedes Mal, wenn Sie eine neue Terminalsitzung öffnen, werden Sie zur Eingabe der Schlüsselkennphrase aufgefordert. Führen Sie die folgenden Befehle aus, um die Datei .bash_profile
anzuhängen, damit der SSH-Agent mit jeder Bash-Sitzung
startet und Ihren Schlüssel hinzufügt.
echo ‘eval $(ssh-agent)’ >> ~/.bash_profile
echo ‘ssh-add’ >> ~/.bash_profile