Verwenden von SSH-Agent zum SSH-Zugriff auf einen Remote-Server, ohne das Kennwort einzugeben

Verwenden von SSH-Agent zum SSH-Zugriff auf einen Remote-Server, ohne das Kennwort einzugeben

Ich versuche, es bei einem Remote-Server zu ssh-agentverwenden ssh.

Ich verstehe, dass ich, wenn ich meinen lokalen Host public_keyzum Remote-Server hinzufüge ./ssh/authorized_keys, per SSH auf den Server zugreifen kann, ohne mein Passwort einzugeben.

Ich habe jedoch versucht, dies mithilfe von zu tun, ssh-agentda ich in meiner Jenkins-Pipeline einen Remote-Server verwenden muss ssh. Bevor ich es auf Jenkins gemacht habe, habe ich versucht, es lokal zu tun.

Was ich getan habe ist

eval $(ssh-agent -s)
chmod 600 ./key_key2.key
ssh-add ./key_key2.key
ssh root@<remote_server> docker ps -v

wobei die des Remote-Servers key_key2.keyenthalten ist .private_key

Ich muss trotzdem das Passwort eingeben. Ist das die richtige Vorgehensweise?

Ich habe das Gefühl, dass durch die Verwendung ssh-agentder Teil übersprungen wird, in dem ich das public_keyzum Remote-Server hinzufüge authorized_keys, aber ich dachte, dass das Überspringen dieses Teils einer der Gründe für die Verwendung des ist public_key.

Antwort1

Nehmen wir an, ServerA ist Ihr Computer zu Hause und ServerB ist der Remote-Server. Um eine Verbindung über einen öffentlichen/privaten Schlüssel herzustellen, müssen wir auf ServerA einen Schlüsselsatz erstellen. Bitte beachten Sie, dass ich kein Passwort eingegeben habe.

ServerA $ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/admin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/admin/.ssh/id_rsa.
Your public key has been saved in /home/admin/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:11tmtkpYjGCPLc8I59kV1QySEYfwpJt76BDMX01aTkU admin@localhost
The key's randomart image is:
+---[RSA 4096]----+
|          ..==+=E|
|           +o+ .o|
|        o . o +  |
|       + = * O   |
|      . S B B B  |
|       + @ B * . |
|        = O + .  |
|         o o .   |
|          . .    |
+----[SHA256]-----+

Wie Sie sehen, wurden die Schlüssel unter /home/admin/.ssh/id_rsa (privater Schlüssel) und /home/admin/.ssh/id_rsa.pub (öffentlicher Schlüssel) generiert.

Jetzt melden wir uns bei ServerB an und fügen den öffentlichen Schlüssel von ServerA zu den authorized_keys in ~/.ssh/authorized_keys hinzu.

ServerA $ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDP4BIiaHUm6Ow9SGFOdHpsaAu2odnBLfDu5YjwQeESLe7ubfQ62v21PXKAJUVS0ZcAN7KfAfHv+f8Los8GE7NhAJUeOB18YpaQohLVaajKb0pSJnAfcYMqH38Ouq3Q23GA61ZqUF4o3pJpRf9O2V/qpIkGQtMZ1/EbYApvh0y+MSlmrDHNjm6n6LO1P31WqsAwzTlZilcaDJTDu3ILW+bd+b1LzMr2oQUPnrc2YIiGRt8PvvM5YcGfN9/4D1vKyLNgF3c+KhbEapsoxfsGmEl1Z+jR/ldep0jwEh7XVXAMrLWhtUdi/a40R0Zisj3b27gfrQLmEMBOS4X0nfDJ9/QoxVl16SwZWxFuDX1xV/n2XIAg1OQ== admin@localhost

Kopieren Sie die Ausgabe von ServerA und fügen Sie sie in die authorized_keys von ServerB ein.

ServerB $ cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDP4BIiaHUm6Ow9SGFOdHpsaAu2odnBLfDu5YjwQeESLe7ubfQ62v21PXKAJUVS0ZcAN7KfAfHv+f8Los8GE7NhAJUeOB18YpaQohLVaajKb0pSJnAfcYMqH38Ouq3Q23GA61ZqUF4o3pJpRf9O2V/qpIkGQtMZ1/EbYApvh0y+MSlmrDHNjm6n6LO1P31WqsAwzTlZilcaDJTDu3ILW+bd+b1LzMr2oQUPnrc2YIiGRt8PvvM5YcGfN9/4D1vKyLNgF3c+KhbEapsoxfsGmEl1Z+jR/ldep0jwEh7XVXAMrLWhtUdi/a40R0Zisj3b27gfrQLmEMBOS4X0nfDJ9/QoxVl16SwZWxFuDX1xV/n2XIAg1OQ== admin@localhost

Laden Sie nun den SSH-Agenten auf ServerA und fügen Sie den privaten Schlüssel hinzu

eval $(ssh-agent)
ServerA $ ssh-add ~/.ssh/id_rsa
Identity added: /home/admin/.ssh/id_rsa (/home/admin/.ssh/id_rsa)

ServerA $ ssh [email protected]
The authenticity of host '[someIP.com]:2220 ([xx.xxx.xxx.xxx]:2220)' can't be established.
ECDSA key fingerprint is SHA256:K6nMI2Dxb7t6oj00HlKmPCCuGorgQoBJCeXB31B9VTY.
ECDSA key fingerprint is MD5:aa:20:4f:08:bb:5d:c5:8e:fd:cb:4c:5f:b9:3b:44:59.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[someIP.com]:2220 ([xx.xxx.xxx.xxx]:2220)' (ECDSA) to the list of known hosts.
Last login: Tue Nov 26 21:20:14 2019
admin@mail ~]$

verwandte Informationen