it-swarm.com.de

Welche privaten Schlüssel werden von ssh ohne Konfiguration getestet?

Ich weiß, dass es mehrere Fragen zu SSH-Schlüsseln gibt und wie man sie konfiguriert. Aber ich fand niemanden, der meine Frage beantwortete.

Hier ist es also: Ich habe mehrere SSH-Schlüssel in meinem .ssh -Verzeichnis. Für einige Fernbedienungen unterschiedliche Tasten.

Jetzt habe ich weder in .ssh/config konfiguriert, welcher Schlüssel für welchen Host verwendet werden soll, noch habe ich sie manuell zu einem Agenten hinzugefügt, was einige Fragen hier bereits angesprochen haben. Ich habe gerade die Schlüssel mit ssh-keygen erstellt und es funktioniert.

Jetzt möchte ich wissen, wer dafür verantwortlich ist und welche Schlüssel automatisch ausprobiert werden? Ich habe etwas im Kopf, das besagt, dass ungefähr fünf Schlüssel automatisch auf Kompatibilität überprüft werden - aber ich kann nicht finden, wo ich diese Informationen gefunden habe.

Fügt ssh-keygen diese Schlüssel automatisch einem Agenten hinzu? Oder sucht ssh standardmäßig nach einem passenden Schlüssel?

5

Der ssh-Client überprüft alle Ihre Schlüssel, bis er einen passenden findet.

So funktioniert es (dies ist sehr vereinfacht, vorher wurde ein ziemlich komplexer Tanz gemacht, um all dies zu verschlüsseln):

  • Der Server erstellt ein Authentifizierungstoken.
  • Das Token wird mit Ihrem öffentlichen Schlüssel auf dem Server verschlüsselt.
  • Der Server sendet das verschlüsselte Token an den Client.
  • Der Client versucht, das Token mit allen bekannten privaten Schlüsseln zu entschlüsseln.
  • Wenn dies erfolgreich ist, wird das entschlüsselte Token an den Server zurückgesendet.
  • Wenn das Token übereinstimmt, lässt der Server den Client ein.

Welche Dateien Schlüssel sind, hängt vom Client ab.

Für den Openssh-Client (Ubuntu-Standardclient) laut seiner Manpage lauten die Dateien, die als private Schlüssel gelten, ./sshid_rsa, .ssh/id_dsa, .ssh/id_ecdsa sowie die nach dem -i-Flag (it) angegebenen Dateien unterstützt mehrere Dateien) und die in der Konfigurationsdatei deklarierten.

Sie können ihm die Option -v geben, damit er eine Zeile druckt, wenn er versucht, eine Datei als Schlüssel zu verwenden. Dies ist ein Beispiel für eine Nicht-Schlüssel-Anmeldung:

$ ssh -v www.hostremoved.com
OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
<...>
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/javier/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/javier/.ssh/id_dsa
debug1: Trying private key: /home/javier/.ssh/id_ecdsa
debug1: Next authentication method: password
<...>

Wie Sie sehen können, druckt es alle Schlüssel, die es versucht, es schlägt alles fehl. Sie können dies in Ihrem System verwenden, um herauszufinden, welche Dateien ssh in Ihrem eigenen System verwendet.

Unten sehen Sie die Ausgabe, wenn ein vorhandener Schlüssel gefunden und ausprobiert wurde

debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: [email protected]

[email protected] sind die Informationen, die an den öffentlichen Schlüssel angehängt werden.


Wenn Sie sich fragen, wie Ihr ssh-Client Ihre privaten Schlüssel findet, ist das keine Zauberei. Unter Gnome (auch xfce und KDE) gibt es einen speziellen ssh-Agenten, der automatisch Schlüssel in das Verzeichnis .ssh hinzufügt, die einen entsprechenden öffentlichen Schlüssel mit der Endung .pub haben.

Wenn Sie keinen so komfortablen ssh-Agenten haben, müssen Sie Ihre privaten Schlüssel mit ssh-add key hinzufügen.

6
Javier Rivera

Angenommen, Sie haben den öffentlichen Schlüssel in die Datei authorized_keys auf dem Remote-Computer kopiert, überprüft der ssh-Client, welcher private Schlüssel auf dem lokalen Computer mit dem öffentlichen Schlüssel auf dem Remote-Computer übereinstimmt.

2
jackweirdy

Kopiert/eingefügt von ssh_config (5) in openssh-client 1: 5.3p1-3ubuntu7:

IdentityFile

Gibt eine Datei an, aus der die RSA- oder DSA-Authentifizierungsidentität des Benutzers gelesen wird. Die Standardeinstellung ist ~/.ssh/identity für Protokollversion 1 und ~/.ssh/id_rsa und ~/.ssh/id_dsa für Protokollversion 2. Außerdem werden alle vom Authentifizierungsagenten dargestellten Identitäten für die Authentifizierung verwendet.

Der Dateiname kann die Tilde-Syntax verwenden, um auf das Basisverzeichnis eines Benutzers oder eines der folgenden Escape-Zeichen zu verweisen: '% d' (Basisverzeichnis des lokalen Benutzers), '% u' (lokaler Benutzername), '% l' (lokal) Hostname), '% h' (Remote-Hostname) oder '% r' (Remote-Benutzername).

In Konfigurationsdateien können mehrere Identitätsdateien angegeben werden. Alle diese Identitäten werden nacheinander geprüft.

Das Fazit ist, dass es von der Protokollversion abhängt. Für Version 2 (wahrscheinlich in diesen Tagen) werden id_rsa und id_dsa in dieser Reihenfolge gemäß dem obigen Dokument getestet. Neuere Versionen enthalten möglicherweise standardmäßig andere Schlüsseltypen wie id_ecdsa. Überprüfen Sie die Manpage in Ihrer Version auf Details.

1
Wren T.