SSH kann nicht in eine Vagrant Virtual Machine integriert werden

11

Lokaler Vagrant-Computer, der unter der IP-Adresse 10.0.0.23mit dem Hostnamen installiert ist lamp-vm.

Mit dem vagrant sshBefehl kann ich mich gut verbinden und alles tun, was ich brauche.

Dies erzeugt einen Fehler

$ ssh vagrant @ lamp-vm -v -v

debug1: Verbindung zu Adresse 10.0.0.23 herstellen Port 22: Zeitüberschreitung bei Verbindung
ssh: Verbindung zu Host-Lampe herstellen vm Port 22: Zeitüberschreitung bei Verbindung

Meine /etc/hostsDatei enthält 10.0.0.23 lamp-vm.

Meine .ssh / config-Datei sieht aus wie

Host lamp-vm
Benutzer vagrant
IdentityFile ~ / .ssh / vagrant

Ich habe den Befehl ssh mit und auch ohne ausprobiert -i /path/to/.sh/identity_file.

Wie verbinde ich mich mit SSH mit meiner Vagrant Virtual Machine?

csi
quelle

Antworten:

8

Ich war auch mit diesem Problem konfrontiert und dies war meine endgültige Konfiguration, die es mir ermöglichte, von überall auf meinem Host-Computer in meine Vagabundmaschine zu ssh.

Vagrantfile:

...
# Setting up private_network to have virtual host
config.vm.network :private_network, ip: "192.168.33.10"

# Enable ssh forward agent
config.ssh.forward_agent = true
...

ssh in die Maschine:

ssh [email protected]

Sie werden zur Eingabe des Passworts aufgefordert (Standard ist vagabundierend):

[email protected]'s password:

Und boom, du bist dabei!

PS * Sie können scp auch überall auf Ihrem Host-Computer verwenden:

scp /path/to/src/file [email protected]:/path/to/destination/file
shaoming
quelle
Während dies funktioniert, ist es ziemlich fragil - ich habe festgestellt, dass unsere Vagrant-Datei einige Änderungen an / etc / network / interfaces auf der VirtualBox-VM verursacht hat, was bedeutete, dass meine SSH-Verbindung unterbrochen wurde. Eine localhost-Verbindung ( ssh -p 2222 vagrant@localhost) ist davon nicht betroffen.
RichVel
8

Es ist alt, aber da es keine Antwort gibt, werde ich eine geben. Befehl:

vagrant ssh

Ist das Äquivalent von

ssh vagrant@localhost -p 2222 -i .vagrant/machines/default/virtualbox/private_key

Dies ist das Standardverhalten, wenn Sie den Änderungsbefehl entsprechend geändert haben. Zunächst erstellt Vagrant einen Vagrant-Benutzer auf Ihrer Gastbox, und Sie verwenden diesen Benutzer für ssh. Wie bereits erwähnt, wird der Datenverkehr standardmäßig von Port 2222 auf Ihrem Host an Port 22 auf Ihrem Gast weitergeleitet (wenn Sie vagrant up verwenden, wird diese Nachricht angezeigt). Und schließlich erstellt Vagrant Schlüssel für die SSH-Sitzung, damit Sie dies nicht müssen. Daher müssen Sie bei der Verbindung über SSH einen öffentlichen Schlüssel als Argument angeben.

stefwhite
quelle
Dies ist die richtige und richtige Antwort! Funktioniert ohne Probleme, zum Beispiel mit Mobaxterm. Sie müssen auch den vollständigen Pfad für private_key
sineverba
6

Dieses Verhalten ist beabsichtigt.

Vagrant verwendet den VirtualBox NAT-Modus, dh die Portweiterleitung.

Sie können im NAT-Modus kein SSH direkt auf Ihre VM übertragen.

Die Verwendung von 'vagrant ssh' bedeutet, dass vagrant die Portweiterleitung für Sie übernimmt, sodass Sie sich darüber keine Sorgen machen müssen. Ich denke, es wird standardmäßig eine Verbindung zu localhost auf Port 2222 hergestellt, aber es wird auch versucht, alle Kollisionen von Portnummern zu sortieren.

Wenn Sie SSH direkt an Ihre VM senden müssen, schalten Sie die VM in den Nur-Host- oder Bridged-Netzwerkmodus.

Philip Wigg
quelle
Danke Philip, aber wie würde ich das lösen? Entschuldigung für die Unerfahrenheit.
CSI
1
Ich verwende den Nur-Host-Modus und das Problem besteht weiterhin.
CSI
Sollte die akzeptierte Antwort sein. Sehr hilfreich, um dies zu verstehen - über localhost auf Port 2222 war der Weg zu einem funktionierenden Vagrant-Setup (aus irgendeinem Grund konnte ich den unsicheren Schlüssel_private_key noch nicht zum Laufen bringen.) Ich stellte fest, dass der Standardschlüssel 'unsicherer privater Schlüssel' dies nicht tat Ich habe also einen anderen privaten Schlüssel und Benutzernamen in der Vagrant-Datei angegeben, aber der Teil des lokalen Host-Ports 2222 musste nicht geändert werden.
RichVel
3

Windows / Vagrant / Ubuntu

Dies hat bei mir funktioniert und Sie können schnell herausfinden, ob dies funktioniert, indem Sie dies auf dem ssh-Client ausführen.

ssh [email protected] -p 2222 -v

Das -v versetzt es in den ausführlichen Modus und zeigt Debug-Informationen an ...

$ ssh [email protected] -p 2222 -v
OpenSSH_7.1p1, OpenSSL 1.0.2e 3. Dezember 2015
debug1: Verbindung zu 127.0.0.1 [127.0.0.1] Port 2222.
debug1: Verbindung hergestellt.
debug1: Identitätsdatei /home/Jamie/.ssh/id_rsa Typ 1
debug1: key_load_public: Keine solche Datei oder kein solches Verzeichnis
debug1: Identitätsdatei /home/Jamie/.ssh/id_rsa-cert Typ -1
debug1: key_load_public: Keine solche Datei oder Verzeichnis
debug1: Identitätsdatei /home/Jamie/.ssh/id_dsa Typ -1
debug1: key_load_public: Keine solche Datei oder Verzeichnis
debug1: Identitätsdatei /home/Jamie/.ssh/id_dsa-cert Typ -1
debug1: key_load_public: Keine solche Datei oder Verzeichnis
debug1: Identitätsdatei /home/Jamie/.ssh/id_ecdsa Typ -1
debug1: key_load_public: Keine solche Datei oder kein solches Verzeichnis
debug1: Identitätsdatei /home/Jamie/.ssh/id_ecdsa-cert Typ -1
debug1: key_load_public: Keine solche Datei oder kein solches Verzeichnis
debug1: Identitätsdatei /home/Jamie/.ssh/id_ed25519 Typ -1
debug1: key_load_public: Keine solche Datei oder kein solches Verzeichnis
debug1: Identitätsdatei /home/Jamie/.ssh/id_ed25519-cert Typ -1
debug1: Aktivieren des Kompatibilitätsmodus für Protokoll 2.0
debug1: Lokale Versionszeichenfolge SSH-2.0-OpenSSH_7.1
debug1 : Remote-Protokoll Version 2.0, Remote-Softwareversion OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6
Debug1: Übereinstimmung: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6 pat OpenSSH_6.6.1 * kompatibel 0x04000000
Debug1: Authentifizierung bei 127.0.0.1:2222 als 'Vagrant '
debug1: SSH2_MSG_KEXINIT gesendet
Verbindung geschlossen von 127.0.0.1

Also ... SSH2_MSG_KEXINIT bedeutet, dass die Schlüssel ausgetauscht werden. Dies scheitert in Kürze ...

In diesem Fall habe ich meine Schlüssel gelöscht und sie auf der VM neu generiert. ( http://ask.xmodulo.com/sshd-error-could-not-load-host-key.html )

$ ls -al / etc / ssh / ssh Schlüssel
$ sudo rm -r / etc / ssh / ssh
Schlüssel
$ sudo dpkg-Reconfigure openssh-server

Sobald meine Schlüssel regeneriert waren, konnte ich SSH in meine Vagrant Box.

mrjamiebowman
quelle
0

Virtuelle Maschine zerstört Virtuelle Maschine neu
geladen
Alles hat funktioniert

Ich weiß nicht warum, aber offensichtlich wurde bei der ersten Bereitstellung etwas nicht richtig geladen.

csi
quelle