Anstatt ein neues SSH-Schlüsselpaar in einer Vagrant-Box zu erstellen, möchte ich das Schlüsselpaar, das ich auf meinem Host-Computer habe, mit agent forwarding wiederverwenden. Ich habe versucht, config.ssh.forward_agent auf TRUE in der Vagrantfile zu setzen, dann die VM neu zu starten und versucht, Folgendes zu verwenden:
vagrant ssh -- -A
... aber ich werde immer noch zur Eingabe eines Kennworts aufgefordert, wenn ich versuche, eine git-Kaufabwicklung durchzuführen. Irgendeine Idee, was mir fehlt?
Ich verwende Vagrant 2 unter OS X Mountain Lion.
Vagrant.configure("2") do |config|
config.ssh.private_key_path = "~/.ssh/id_rsa"
config.ssh.forward_agent = true
end
config.ssh.private_key_path
ist Ihr lokaler privater Schlüsselssh-add -L
überprüfen, ob es nicht aufgeführt ist, fügen Sie es mit ssh-add ~/.ssh/id_rsa
hinzu.~/.ssh/authorized_keys
auf der Vagrant-VM hinzuzufügen. Sie können das Kopieren und Einfügen oder ein Tool wie ssh-copy-id verwenden.Fügen Sie es der Vagrantfile hinzu
Vagrant::Config.run do |config|
# stuff
config.ssh.forward_agent = true
end
Vergewissern Sie sich zusätzlich zum Hinzufügen von "config.ssh.forward_agent = true" zur Vagrant-Datei, dass der Host-Computer für die Agent-Weiterleitung eingerichtet ist. Github bietet dazu einen guten Leitfaden . (Sehen Sie sich den Abschnitt zur Fehlerbehebung an.).
Ich hatte dies mit den obigen Antworten zu 1.4.3, aber ich habe auf 1.5 aufgehört zu arbeiten. Ich muss jetzt ssh-add
ausführen, um vollständig mit 1.5 arbeiten zu können.
Vorerst füge ich meinem Ansible-Provisioning-Skript die folgende Zeile hinzu .
- name: Make sure ssk keys are passed to guest.
local_action: command ssh-add
Ich habe auch eine Gist meines Setups erstellt: https://Gist.github.com/KyleJamesWalker/9538912
Wenn Sie Windows verwenden, funktioniert die SSH-Weiterleitung in Vagrant standardmäßig nicht ordnungsgemäß (aufgrund eines Fehlers in net-ssh). Sehen Sie sich diesen speziellen Vagrant-Fehlerbericht an: https://github.com/mitchellh/vagrant/issues/1735
Es gibt jedoch einen Workaround! Kopieren Sie einfach Ihren lokalen SSH-Schlüssel über ein einfaches Bereitstellungsskript in Ihre VagrantFile automatisch in den Vagrant VM. Hier ein Beispiel: https://github.com/mitchellh/vagrant/issues/1735#issuecomment-25640783
Das eigentliche Problem ist, dass Vagrant 127.0.0.1:2222 als Standardportweiterleitung ..__ verwendet. Sie können eine hinzufügen (nicht 2222, 2222 ist bereits standardmäßig belegt).
config.vm.network "forwarded_port", Gast: 22, Host: 2333, Host_ip: "0.0.0.0"
"0.0.0.0" ist eine Möglichkeit, die Anforderung von einer externen Verbindung zu akzeptieren Dann Ssh -p 2333 [email protected] (ändern Sie Ihre eigene Host-IP-Adresse, dud) Wird einwandfrei funktionieren. Danken Sie mir, rufen Sie mich einfach Leifeng an!
Als wir kürzlich das vagrant-aws
-Plugin mit Vagrant 1.1.5 ausprobiert haben, sind wir auf ein Problem mit der Weiterleitung von SSH-Agenten gestoßen. Es stellte sich heraus, dass Vagrant IdentitiesOnly=yes
ohne die Option erzwang, es in no
zu ändern. Dies zwang Vagrant, nur den privaten Schlüssel zu betrachten, den wir in der Vagrantfile
für den AWS-Anbieter aufgelistet haben.
Ich habe unsere Erfahrungen in einem Blogpost aufgeschrieben. Es kann sich irgendwann in eine Pull-Anfrage verwandeln.
Unter Windows besteht das Problem darin, dass Vagrant nicht mit dem ssh-agent von git-bash kommunizieren kann. Es weiß jedoch, wie PuTTYs Pageant verwendet wird. Solange Pageant läuft und Ihren SSH-Schlüssel geladen hat und Sie config.ssh.forward_agent gesetzt haben, sollte dies funktionieren.
Siehe diesen Kommentar für Details.
Wenn Sie Pageant verwenden, ist die Workaround-Aktualisierung des Vagrantfile zum Kopieren von SSH-Schlüsseln unter Windows nicht mehr erforderlich.
Stellen Sie sicher, dass die VM keinen eigenen SSH-Agenten startet. Ich hatte diese Zeile in meinem ~/.profile
eval `ssh-agent`
Nach dem Entfernen funktionierte die SSH-Agentenweiterleitung.