Wie die meisten Sysadmins verwende ich OpenSh die ganze Zeit. Ich habe ungefähr ein Dutzend SSH-Schlüssel. Ich möchte für jeden Host einen anderen SSH-Schlüssel haben. Dies verursacht jedoch ein Problem, wenn ich zum ersten Mal eine Verbindung zu einem Host herstelle und ich nur ein Kennwort habe. Ich möchte nur mit einem Passwort eine Verbindung zum Host herstellen, in diesem Fall ohne SSH-Schlüssel. Der ssh-Client bietet jedoch alle öffentlichen Schlüssel in meinem an ~/.ssh/
(das weiß ich aus der Ausgabe von ssh -v
). Da ich so viele habe, werde ich wegen zu vieler Authentifizierungsfehler getrennt.
Gibt es eine Möglichkeit, meinem ssh-Client mitzuteilen, dass er nicht alle ssh-Schlüssel anbieten soll?
ssh
public-key
private-key
Rory
quelle
quelle
Antworten:
Dies ist das erwartete Verhalten gemäß der Manpage von
ssh_config
:Grundsätzlich werden durch die Angabe von
IdentityFile
s nur Schlüssel zu einer aktuellen Liste hinzugefügt, die der SSH-Agent dem Client bereits präsentiert hat.Überschreiben Sie dieses Verhalten mit dem folgenden Befehl am Ende Ihrer
.ssh/config
Datei:Sie können diese Einstellung auch auf der Host-Ebene überschreiben, z.
quelle
ssh -o "IdentitiesOnly true" -v -A user@host
, mit dem ich mich bei einem Computer anmelde, auf dem keiner meiner Schlüssel vorhanden ist, aber ich möchte eine Agentenweiterleitung anbieten, um fortzufahren. (-v
zum ausführlichen Debuggen).yes
(und auch nichttrue
)?IdentitiesOnly
Möglicherweise hilft dies nicht immer. Möglicherweise müssen Sie einen Host speziell ausschließen. siehe superuser.com/questions/859661/...Obwohl andere dies mit konfigurationsbasierten Lösungen angedeutet haben, ist es wahrscheinlich erwähnenswert, darauf hinzuweisen, dass Sie dies auf einfache Weise einmalig in der Befehlszeile tun können:
quelle
Nach der Lösung von James Sneeringer möchten Sie möglicherweise eine ssh_config wie folgt festlegen:
Wenn Sie mit einem bestimmten Schlüssel eine Verbindung zu mehreren Computern herstellen, die sich nicht in einer gemeinsamen Domäne befinden, sollten Sie ihnen alle CNAMEs in Ihrem eigenen DNS zuweisen. Das mache ich mit allen Kundensystemen.
quelle
Ähnlich wie bei der Lösung von user23413 können Sie die Authentifizierung mit öffentlichen Schlüsseln für einen bestimmten Host (oder ein Platzhaltermuster) deaktivieren:
quelle
Wenn Sie mit ssh -i / path / to / key auf eine bestimmte Schlüsseldatei verweisen, wird diese nur verwendet, auch wenn andere in den Agenten geladen sind, und Sie werden nicht zur Eingabe des Kennworts aufgefordert. Sie können auch ~ / .ssh / config bearbeiten und so etwas hinzufügen ...
Host foo.example.com
IdentityFile .ssh / id_rsa_foo.example.com
Sie können auch tun ...
Host * .example.org
IdentityFile .ssh / id_rsa_example.org
quelle
IdentitiesOnly
nur mit diesem Willen.