2017-06-27 3 views
2

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?

Antwort

1

Sie leiten die ssh-agent, aber nicht die lokale Konfiguration, die für die Auswahl des richtigen Schlüssels verantwortlich ist. Damit es funktioniert, müssen Sie auch die Konfiguration auf den Server kopieren.

Aber kopieren Sie nicht die privaten Schlüssel.Die Verweise auf die öffentlichen Schlüssel sollten die Aufgabe erfüllen, da sie ssh erlauben, diesen Schlüssel auszuprobieren und den richtigen Schlüssel aus der ssh-agent auszuwählen.

+0

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? –

+0

Ja. Die Konfigurationsdatei und die öffentlichen Schlüssel ('~/.ssh/id_rsa.pub' und' ~/.ssh/id_rsa_personal.pub'). – Jakuje

+0

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. –

Verwandte Themen