Nehmen wir an, ich habe einen Schlüssel für Github, zusammen mit anderen Schlüsseln. Ich habe meinem ssh-Agenten ssh-add -L
auf meinem Heimcomputer A viele Schlüssel hinzugefügt ( gibt viele Zeilen zurück). In meinem habe .ssh/config
ich festgelegt, welcher Schlüssel mit welchem Host verwendet werden soll, z
ssh -T -vvv [email protected] 2>&1 | grep Offering
gibt
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.github
Wie erwartet wird nur ein Schlüssel angeboten. Aber dann ssh-ing zu einem Host B mit ForwardAgent yes
und Wiederholen des gleichen Befehls, bekomme ich
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.linode2
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.helium
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.github
Das heißt, es versucht alle meine Schlüssel. Dies ist problematisch, da nur eine begrenzte Anzahl von Schlüsseln versucht werden kann, bevor die Server zurückkehren Too many authentication failures
. Also habe ich versucht, die Bearbeitung .ssh/config
auf Host B einzuschließen
Host github.com
IdentityFile /Users/doxna/.ssh/id_rsa.github
IdentitiesOnly yes
dann bekomme ich aber doch keine schlüsselopfer, sondern
debug2: key: /Users/doxna/.ssh/id_rsa.github ((nil))
was ich vermute, bedeutet, dass der Schlüssel nicht gefunden wurde (?) Und schließlich befindet sich der Schlüssel auf meinem Heimcomputer A, nicht auf Host B, also lautet die Frage, wie man auf Host B darauf verweist? Hoffe, ich habe es geschafft, die Frage zu erklären.
ssh
auf eine öffentliche Schlüsseldatei ohne zugehörige private Schlüsseldatei verweisen , sollte diese nur den öffentlichen Schlüssel aus der Datei lesen und den Agenten den entsprechenden privaten Schlüssel zum Generieren der Signatur verwenden lassen.Gute Antwort von @Kasperd, aber beachten Sie auch, dass Sie, wenn Host B kompromittiert ist oder Sie nicht allen vertrauen, die dort über Root-Rechte verfügen, weiterhin alle Ihre Schlüssel einem Missbrauch aussetzen, solange Sie angemeldet sind in auf diesem Host.
Ein besserer Ansatz könnte daher darin bestehen, den Zugriff nur auf die benötigten Schlüssel weiterzuleiten. Vielleicht versuchen Sie,
ssh-agent-filter
welche in Debian / Ubuntu-Repositories oder von Github ist .EDIT: Ich habe ließ sich auf
ssh-ident
anstattssh-agent-filter
für Schlüssel selektiv weiterzuleiten, wenn es nicht so ist eine Erfahrung glatt wie man vielleicht hoffen.quelle
SSH_*
Umgebungsvariablen und melden sich mit dem Schlüssel an der gewünschten Stelle an, obwohl Sie noch keine tatsächliche Kopie haben.