Es gibt eine gute Anzahl von Antworten auf ssh-Agent-Weiterleitung, aber ich konnte nicht eine finden, die mein Problem anspricht.Wie bekomme ich die ssh-Agent-Weiterleitung mit mehreren Konten auf einer VM?
Ich verwende packer.io, um die Bereitstellung meiner Server zu automatisieren. Einer der Erbauer, die ich verwende, ist der virtualbox-iso
Erbauer, zum mir zu erlauben, eine Vagrant Schachtel für das lokale Prüfen zu verursachen.
Mein Host-Rechner ist ein Macbook Pro, dem ich zwei SSH-Schlüssel zu ssh-Agent mit einem Befehl wie: ssh-add -K ~/.ssh/id_rsa
hinzugefügt habe. Ich kann überprüfen, ob beide mit ssh-add -l
und ssh-add -L
existieren.
Einer der Schlüssel ist mein Arbeit bitbucket Konto und der andere ist mein persönliches Konto. Ich möchte das Work-Konto speziell auf diese bestimmte VM ausrichten. Auf meinem Rechner habe ich eine Config unter ~/.ssh/config
mit folgendem Inhalt:
Host work.bitbucket.org
User workuser
ForwardAgent yes
IdentitiesOnly yes
IdentityFile ~/.ssh/id_rsa
Host bitbucket.org
User homeuser
ForwardAgent yes
IdentitiesOnly yes
IdentityFile ~/.ssh/id_rsa_personal
Ich konnte dann melden Sie sich an auf meinem Rechner mit meiner Arbeit Schlüssel über: ssh -T [email protected]
und mein Home-Taste mit ssh -T [email protected]
.
Jetzt für die VM ...
Nach Anweisungen hatte ich von anderen Antworten finde ich config.ssh.forward_agent = true
meine Vagrantfile hinzugefügt hatte.
ich auch die folgenden in einem meiner Provisioning-Scripts:
echo "updating known_hosts folder"
ssh-keyscan work.bitbucket.org >> ~/.ssh/known_hosts
echo "adding bitbucket key from file"
sudo cat /input/rsa.txt >> ~/.ssh/authorized_keys
Der erste Befehl mir jede Zukunft zu vermeiden erlaubt fordert den Schlüssel zu meinem known_hosts-Datei hinzuzufügen. Der zweite Befehl hängt einfach meinen Rsa-Schlüssel aus einer Datei an, die in einem vorherigen Schritt hochgeladen wurde.
Das scheint meine Agentenweiterleitung auf meiner VM zu einem gewissen Grad arbeiten, aber es wählt immer den ersten Eintrag in meinem ssh-Agent.
Wenn ich entweder versuche: ssh -T [email protected]
oder ssh -T [email protected]
Ich bekomme immer den ersten Schlüssel in ssh-add -l
aufgelistet. (Ich verifizierte dies tatsächlich durch Hinzufügen und Entfernen von Schlüsseln, um die Bestellung zu manipulieren)
Ich nahm an, dies war aufgrund der Tatsache, dass ich bereits in einer SSH-Sitzung bin, während ich auf der Box bin. Also schaute ich auf this question, um zu überprüfen, wie vagrant ssh
tatsächlich funktioniert. Ich habe versucht, meine Host-Maschinen config
Datei mit 127.0.0.1:PORT
zu manipulieren, wobei PORT der spezifische Port war, auf dem sich meine Maschine befindet. Ich versuchte auch, eine wilde Karte config
auf meiner VM hinzuzufügen, um den Sprung zu erlauben, aber ich hatte offensichtlich nicht etwas richtig eingerichtet, da es immer noch nicht wie erwartet funktioniert.
Für jetzt kann ich einfach die zusätzlichen Schlüssel manuell entfernen (ssh-add -d pathtokeytoremovehere
) und fügen sie zurück, wenn ich sie brauche, aber das ist offensichtlich nicht ideal.
Irgendwelche Ideen?
Können Sie genauer bestimmen, was ich auf die VM (Server) kopieren muss? Willst du damit sagen, dass ich den Host ~/.ssh/config auf die VM kopieren muss? Muss ich auch den öffentlichen Schlüssel kopieren? –
Ja. Die Konfigurationsdatei und die öffentlichen Schlüssel ('~/.ssh/id_rsa.pub' und' ~/.ssh/id_rsa_personal.pub'). – Jakuje
Ich werde heute einen Schuss geben. Danke für die Information! Ich denke, ich dachte, das wäre eine überflüssige Information. Ich hätte schwören können, dass ich gelesen habe, dass die Leute diese Art von Dingen mit Hilfe von Zwischenservern konfigurieren konnten, und ich nahm an, dass sie keine Schlüssel zu allen beteiligten Maschinen hochgeladen haben. Ich werde diese Antwort kommentieren oder akzeptieren, nachdem ich das versucht habe. –