Impossibile SSH in una macchina virtuale Vagrant


11

Macchina Vagrant locale installata all'indirizzo IP 10.0.0.23con nome host lamp-vm.

Usando il vagrant sshcomando, posso collegarmi bene e fare tutto ciò di cui ho bisogno.

Questo crea un errore

$ ssh vagrant @ lamp-vm -v -v

debug1: connettersi all'indirizzo 10.0.0.23 porta 22: timeout connessione
ssh: connettersi all'host lamp-vm porta 22: timeout connessione

Il mio /etc/hostsfile contiene 10.0.0.23 lamp-vm.

Il mio file .ssh / config è simile

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

Ho provato il comando ssh con e senza -i /path/to/.sh/identity_fileanche.

Come mi collego alla mia macchina virtuale Vagrant usando SSH?

Risposte:


8

Ho anche affrontato questo problema e questa era la mia configurazione finale che mi ha permesso di accedere alla mia macchina vagabonda da qualsiasi parte della mia macchina host.

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 machine:

ssh vagrant@192.168.33.10

Ti verrà richiesta la password (il valore predefinito è vagabondo):

vagrant@192.168.33.28's password:

E boom, ci sei!

PS * Puoi usare scp anche ovunque nel tuo computer host:

scp /path/to/src/file vagrant@192.168.33.10:/path/to/destination/file

Mentre funziona, è abbastanza fragile - ho scoperto che il nostro Vagrantfile ha causato alcune modifiche a / etc / network / interfaces sulla VM VirtualBox, il che significa che la mia connessione SSH sarebbe caduta. Una connessione localhost ( ssh -p 2222 vagrant@localhost) non sarà influenzata da questo.
RichVel

8

È vecchio ma non avendo una risposta, te ne fornirò una. Comando:

vagrant ssh

È l'equivalente di

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

Questo è il comportamento predefinito, se hai cambiato qualcosa in modo appropriato. Prima di tutto Vagrant creerà l'utente vagabondo sulla tua casella ospite e lo userai per ssh. Come dicevano le persone precedenti, inoltrerà il traffico dalla porta 2222 sul tuo host alla porta 22 sul tuo guest, per impostazione predefinita (quando usi vagrant up, vedi che viene visualizzato quel messaggio). Infine, Vagrant crea le chiavi per la sessione ssh, quindi non è necessario, quindi è necessario fornire la chiave pubblica come argomento durante la connessione tramite ssh.


Questa è la risposta vera e giusta! Funziona senza problemi, ad esempio con mobaxterm. Devi anche specificare il percorso completo per private_key
sineverba

6

Questo comportamento è in base alla progettazione.

Vagrant utilizza la modalità NAT VirtualBox che significa utilizzare il port forwarding.

Non puoi SSH direttamente sulla tua VM usando la modalità NAT.

L'uso di 'vagrant ssh' significa che vagrant eseguirà il port forwarding per te, quindi non devi preoccuparti. Penso che si connetterà a localhost sulla porta 2222 per impostazione predefinita, ma proverà anche a risolvere eventuali collisioni di numeri di porta.

Se è necessario SSH direttamente sulla propria macchina virtuale, passare alla modalità di rete solo host o con bridge.


Grazie Filippo, ma come potrei risolverlo? Ci scusiamo per l'inesperienza.
csi,

1
Sto usando la modalità solo host e il problema persiste.
csi,

Dovrebbe essere la risposta accettata. Molto utile per capirlo: passare tramite localhost sulla porta 2222 è stato il percorso verso una configurazione di Vagrant funzionante (per qualche motivo non sono ancora riuscito a far funzionare la chiave insecure_private_key). Ho scoperto che la 'chiave privata insicura' standard non funzionava funziona, quindi ho finito per specificare una chiave privata e un nome utente diversi nel Vagrantfile, ma la parte della porta 2222 localhost non ha bisogno di essere modificata.
RichVel


3

Windows / Vagrant / Ubuntu

Questo è ciò che ha funzionato per me e puoi capire rapidamente se funzionerà eseguendolo sul client ssh.

ssh vagrant@127.0.0.1 -p 2222 -v

-V lo metterà in modalità dettagliata e visualizzerà le informazioni di debug ...

$ ssh vagrant@127.0.0.1 -p 2222 -v
OpenSSH_7.1p1, OpenSSL 1.0.2e 3 dic 2015
debug1: connessione alla porta 12722.0.1 [127.0.0.1] 2222.
debug1: connessione stabilita.
debug1: file di identità /home/Jamie/.ssh/id_rsa tipo 1
debug1: key_load_public: nessun file o directory di
debug1: file di identità /home/Jamie/.ssh/id_rsa-cert tipo -1
debug1: key_load_public: nessun file o directory
debug1: file di identità /home/Jamie/.ssh/id_dsa tipo -1
debug1: key_load_public: nessun file o directory di
debug1: file di identità /home/Jamie/.ssh/id_dsa-cert tipo -1
debug1: key_load_public: nessun tale
debug di file o directory1 : file di identità /home/Jamie/.ssh/id_ecdsa tipo -1
debug1: key_load_public: nessun file o directory di
debug1: file di identità /home/Jamie/.ssh/id_ecdsa-cert tipo -1
debug1: key_load_public: nessun file o directory di
debug1: file di identità /home/Jamie/.ssh/id_ed25519 -1
debug1: key_load_public: nessun file o directory
debug1: file di identità /home/Jamie/.ssh/id_ed25519-cert tipo -1
debug1: abilitazione della modalità di compatibilità per il protocollo 2.0
debug1: stringa della versione locale SSH-2.0-OpenSSH_7.1
debug1 : Protocollo remoto versione 2.0, versione software remota OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6
debug1: corrispondenza: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6 pat OpenSSH_6.6.1 * compat 0x04000000
debug1: autenticazione con 127.0.0.1:2222 come 'vagrant '
debug1: SSH2_MSG_KEXINIT inviato
Connessione chiusa da 127.0.0.1

Quindi ... SSH2_MSG_KEXINIT significa che le chiavi vengono scambiate. Questo fallisce a breve ...

In questo caso, ho eliminato le mie chiavi e le ho rigenerate facendo ciò sulla VM. ( http://ask.xmodulo.com/sshd-error-could-not-load-host-key.html )

$ ls -al / etc / ssh / ssh key
$ sudo rm -r / etc / ssh / ssh
key
$ sudo dpkg-reconfigure openssh-server

Una volta che le mie chiavi sono state rigenerate sono stato in grado di SSH nel mio Vagrant Box.


0

Distrutta la macchina virtuale
Ricaricata la macchina virtuale
Tutto ha funzionato

Non so perché, ma ovviamente qualcosa non è stato caricato correttamente sul primo provisioning.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.