Wie bekomme ich, dass ssh nur einen Schlüssel von ssh-agent verwendet?

294
rdm

Ich muss zwei verschiedene SSH-Schlüssel verwenden, wenn ich mich mit demselben Host verbinden möchte.

Die Maschine, die ich zum Verbinden verwenden muss (aufgrund von IP-Adressbeschränkungen), ist nicht die Maschine, auf der die SSH-Schlüssel gespeichert sind. Ich verwende hier den SSH-Agenten. Diese SSH-Verbindungen erfolgen auch unter der Steuerung eines Skripts, das auf dem Zwischencomputer ausgeführt wird.

Wenn die ssh-Schlüssel auf diesem Rechner lokal waren, könnte ich mir vorstellen, dass ich ssh -i (oder vielleicht ssh-add in einem verschachtelten Agenten) verwenden könnte, um die Identität anzugeben, die ich verwenden möchte, und ich könnte die Skripts und / oder den Skriptkontext aktualisieren mach das Richtige für meinen Fall (wahrscheinlich mit einer Konfigurationsdatei, um die relevanten Details anzugeben).

Da sich die Schlüssel jedoch nicht auf dem Computer befinden, der die SSH-Verbindung ausführt, schlägt ssh -i fehl (die private Schlüsseldatei ist auf diesem Computer nicht vorhanden). In ähnlicher Weise möchte ssh-add, dass ich den Schlüssel durch Angabe des Dateinamens des privaten Schlüssels angibt. (Oder ich vermute, dass das der Fall ist - ich habe nicht wirklich herausgefunden, wie man ssh-agents verschachtelt, aber die Dokumentation zu ssh-add macht Zweifel, dass dies ein plausibler Ansatz wäre.)

Meine Frage ist also: Wie kann ich ssh dazu verwenden, nur den Schlüssel zu verwenden, den ich beim Kontakt mit dem Zielsystem angegeben habe?

[Andere Leute müssen diese Skripte natürlich auch verwenden, aber das ist ein Problem, das ich lösen kann, nachdem ich es für mich zum Laufen gebracht habe.]

Mit anderen Worten, ich habe diese Situation:

$ ssh-add -l 2048 SHA256:A8PFww3boSTRe8sPvXDgir09KNVqu+JvWNw7/GLCiwM /home/account/.ssh/key1.pem (RSA) 2048 SHA256:Em5p4B++GIm0l/zDYgZ26VaHbIb07T6MViu5ioMPTiA /home/account/.ssh/key2_rsa (RSA) 4096 SHA256:JON2JaTTk1r3ufUrGm4C/cE9IG9edyfDxE1zTel/0u8 /home/account/.ssh/key3_rsa (RSA) 

In einem Kontext muss ich ssh verwenden, um key2_rsa zu verwenden, und in dem anderen Kontext brauche ich ssh, um key3_rsa zu verwenden

Die Verwendung des falschen Schlüssels führt dazu, dass die Verbindung zum Zielsystem fehlschlägt (da der andere Schlüssel als Zugriff auf die Maschine, jedoch ohne Zugriff auf dieses Subsystem erkannt wird).

Wie mache ich das?

0
Dies ist _art von _ ein Duplikat von https://superuser.com/questions/357602/use-a-specified-key-from-ssh-agent grawity vor 6 Jahren 1

1 Antwort auf die Frage

2
grawity

ssh -iAkzeptiert auch Dateien, die öffentliche Schlüssel enthalten. Wenn im Agenten ein übereinstimmender Schlüssel gefunden wird, wird er vor allem anderen versucht.

Wenn -o IdentitiesOnly=yesangegeben, verwendet der Client außerdem nur diesen Schlüssel und greift nicht auf andere Schlüssel zurück, wenn er abgelehnt wurde. (Beachten Sie, dass der Rückfall auf andere Mechanismen wie GSSAPI oder Kennwort durch eine andere Option gesteuert wird.)