Der Client kann sich nach der Generierung neuer Schlüssel weiterhin ohne Kennwort per SSH beim Server anmelden

Der Client kann sich nach der Generierung neuer Schlüssel weiterhin ohne Kennwort per SSH beim Server anmelden

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_keysauf 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_rsaObwohl 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 -vnach 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 -lFolgendes 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 -lwird 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).

verwandte Informationen