
Zuerst habe ich Schlüssel auf dem Client generiert (Ubuntu 18.04)
$ ssh-keygen -t rsa -f .ssh/id_rsa
dann habe ich es auf den Server kopiert (Ubuntu Server 18.04)
$ ssh-copy-id 192.168.1.58
Jetzt kann ich den Schlüssel .ssh/authirized_keys
auf dem Server sehen und mich ohne Passwort anmelden.
Dann habe ich auf dem Client neue Schlüssel generiert und die vorherigen Schlüssel wurden überschrieben. Ich kann mich aber immer noch ohne Passwort beim Server anmelden. Ich hatte erwartet, dass der Server mich nicht verifizieren würde, da die Schlüssel geändert wurden. Was übersehe ich?
Bearbeiten:
Ich habe sogar Schlüssel entfernt
$ rm .ssh/id*
$ ls .ssh/
known_hosts
Ich kann mich immer noch anmelden
$ ssh 192.168.1.58
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-91-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Mon Mar 23 08:51:34 UTC 2020
System load: 0.0 Processes: 106
Usage of /: 42.8% of 12.31GB Users logged in: 1
Memory usage: 6% IP address for enp0s3: 192.168.1.58
Swap usage: 0% IP address for docker0: 172.17.0.1
0 packages can be updated.
0 updates are security updates.
Last login: Mon Mar 23 08:46:19 2020 from 192.168.1.59
$ cat .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1[...]nr6eR33QK1BYeNT0BjyhRztd me@ubnutu-vm
$ w
08:53:57 up 2:10, 2 users, load average: 0.06, 0.02, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
me tty1 - 07:12 21.00s 0.35s 0.32s -bash
me pts/0 192.168.1.59 08:51 1.00s 0.06s 0.00s w
Bearbeitung 2:
Das ist von ssh -v
:
...
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:Db+pAR0Bc2kmZ9jju9zttSZDwfbEl4TM82AV7KSZ3DM /home/me/.ssh/id_rsa
debug1: Server accepts key: pkalg rsa-sha2-512 blen 279
debug1: Authentication succeeded (publickey).
Authenticated to 192.168.1.58 ([192.168.1.58]:22).
...
id_rsa
Obwohl keine Datei im Ordner ist /home/me/.ssh/
, dachte ich, dass vielleicht eine Art Cache beteiligt ist und ich nach einem Neustart des Clients nun das Passwort eingeben muss.
Dies ist ssh -v
nach dem Neustart:
...
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/me/.ssh/id_rsa
debug1: Trying private key: /home/me/.ssh/id_dsa
debug1: Trying private key: /home/me/.ssh/id_ecdsa
debug1: Trying private key: /home/me/.ssh/id_ed25519
debug1: Next authentication method: password
[email protected]'s password:
Daher war ein Neustart erforderlich.
Antwort1
Gefolgt@fra-sanAuf Anraten von habe ich etwas tiefer gegraben und das hier ist dabei herausgekommen:
Das ist vonhttps://www.ssh.com/ssh/agent
Standardmäßig verwendet der Agent SSH-Schlüssel, die im Verzeichnis .ssh im Stammverzeichnis des Benutzers gespeichert sind. Der Befehl ssh-add wird zum Hinzufügen von Identitäten zum Agenten verwendet. In der einfachsten Form führen Sie if einfach ohne Argument aus, um die Standarddateien ~/.ssh/id_rsa, .ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 und ~/.ssh/identity hinzuzufügen. Andernfalls geben Sie den Namen der hinzuzufügenden privaten Schlüsseldatei als Argument an.
Der folgende Befehl listet die privaten Schlüssel auf, auf die der Agent derzeit zugreifen kann:
ssh-add -l
Nach dem Verbinden mit dem Server wird ssh-add -l
Folgendes angezeigt:
$ ssh-add -l
2048 SHA256:rzgw39XLAT0NHof4RBXFU/ahKhFWlH8FqMgNxBX2SAE /home/me/.ssh/id_rsa (RSA)
Wenn die id_*
Schlüssel im .ssh/
Ordner geändert oder gelöscht werden, ssh-add -l
wird immer noch die gleiche Ausgabe angezeigt und sie wird für zukünftige Verbindungen verwendet (zumindest in meinem Fall).
An diesem Punkt wird der zwischengespeicherte Schlüssel durch einen Neustart oder einen der folgenden Befehle entfernt:
$ ssh-add -d /home/me/.ssh/id_rsa
Identity removed: /home/me/.ssh/id_rsa (me@ubnutu-vm)
oder
$ ssh-add -D
All identities removed.
Jetzt wird bei neuen Verbindungen eine Kennwortabfrage angezeigt.
Aktualisieren:
Das ist vonhttps://man.openbsd.org/ssh_config.5#AddKeysToAgent:
Schlüssel zum Agenten hinzufügen
Gibt an, ob Schlüssel automatisch zu einem laufenden ssh-agent(1) hinzugefügt werden sollen. Wenn diese Option auf yes gesetzt ist und ein Schlüssel aus einer Datei geladen wird, werden der Schlüssel und seine Passphrase mit der Standardlebensdauer zum Agenten hinzugefügt, als ob dies von ssh-add(1) getan worden wäre. Wenn diese Option auf ask gesetzt ist, verlangt ssh(1) vor dem Hinzufügen eines Schlüssels eine Bestätigung mit dem Programm SSH_ASKPASS (siehe ssh-add(1) für Details). Wenn diese Option auf confirm gesetzt ist, muss jede Verwendung des Schlüssels bestätigt werden, als ob die Option -c für ssh-add(1) angegeben worden wäre. Wenn diese Option auf no gesetzt ist, werden dem Agenten keine Schlüssel hinzugefügt. Das Argument muss seinJa,bestätigen,fragen, oderNEIN(der Standard).