Problem: Ich habe 20-30 ssh-agent
Identitäten. Die meisten Server verweigern die Authentifizierung mit Too many failed authentications
, da ich bei SSH normalerweise nicht versuchen kann, mich mit 20 verschiedenen Schlüsseln anzumelden.
Im Moment spezifiziere ich die Identitätsdatei für jeden Host manuell unter Verwendung der IdentityFile
und der IdentitiesOnly
Direktive, so dass SSH nur eine Schlüsseldatei ausprobiert, was funktioniert.
Leider funktioniert dies nicht mehr, sobald die Originalschlüssel nicht mehr verfügbar sind. ssh-add -l
zeigt mir die richtigen Pfade für jede Schlüsseldatei und sie stimmen mit den Pfaden in überein .ssh/config
, aber es funktioniert nicht. Anscheinend wählt SSH den Einzug nach der Signatur des öffentlichen Schlüssels und nicht nach dem Dateinamen aus, was bedeutet, dass die Originaldateien verfügbar sein müssen, damit SSH den öffentlichen Schlüssel extrahieren kann.
Hierbei gibt es zwei Probleme:
- Es funktioniert nicht mehr, sobald ich das Flash-Laufwerk mit den Tasten ausstecke
- Dadurch wird die Agentenweiterleitung unbrauchbar, da die Schlüsseldateien auf dem Remote-Host nicht verfügbar sind
Natürlich könnte ich die öffentlichen Schlüssel aus meinen Identitätsdateien extrahieren und auf meinem Computer und auf jedem Remotecomputer speichern, bei dem ich mich normalerweise anmelde. Dies scheint jedoch keine wünschenswerte Lösung zu sein.
Was ich brauche, ist die Möglichkeit, eine Identität von ssh-agent anhand des Dateinamens auszuwählen, damit ich den richtigen Schlüssel einfach mit .ssh/config
oder durch Übergabe auswählen kann -i /path/to/original/key
, selbst auf einem Remote-Host, auf den ich SSH-fähig bin. Es wäre sogar noch besser, wenn ich die Schlüssel "mit einem Spitznamen" versehen könnte, damit ich nicht einmal den vollständigen Pfad angeben muss.
authorized_keys
Datei, die je nach verwendetem Schlüssel unterschiedliche Befehle ausführt, ohne jemals einen direkten Shell-Zugriff zuzulassen.