Prova di SSH su Ubuntu VM locale con Putty


145

Ho installato una VM di server Ubuntu, ho installato OpenSSH e ora sto provando a collegarmi usando Putty. All'interno di Putty, sotto "Nome host", ho inserito "Ubuntu", dato che questo è quello che pensavo fosse chiamato quando ho configurato la VM. Tuttavia, viene visualizzato l'errore "Connessione scaduta".

Ho anche provato a inserire "127.0.0.1" nel nome host all'interno di Putty e ho appena ricevuto "Connessione rifiutata". Si noti che ho effettuato il port forwarding per SSH e HTTP all'interno di Oracle VM, quindi non sono in grado di farlo funzionare.


FWIW con bridge / host non ha funzionato solo per me, ma sono stato in grado di aggirare il problema, in sostanza, solo SSH "fuori" (dopotutto scp può andare in entrambe le direzioni), quindi non ho avuto bisogno dell'accesso SSH all'interno dell'ospite.
rogerdpack,

Risposte:


183

VirtualBox creerà una rete privata (10.0.2.x) che sarà connessa alla rete host tramite NAT . (Salvo diversamente configurato.)

Ciò significa che non è possibile accedere direttamente a nessun host della rete privata dalla rete host. Per fare ciò, è necessario un port forwarding. Nelle preferenze di rete della tua VM puoi, ad esempio, configurare VirtualBox per aprire la porta 22 su 127.0.1.1 (un indirizzo di loopback del tuo host) e inoltrare qualsiasi traffico alla porta 22 di 10.0.2.1 (l'indirizzo interno della tua VM)

In questo modo, puoi puntare lo stucco sulla porta 22 di 127.0.1.1 e VirtualBox reindirizzerà questa connessione alla tua VM dove il suo demone ssh risponderà, permettendoti di accedere.


20
Grazie, ha funzionato per me. Da cygwin posso ora ssh username@127.0.1.1e ci sto. Il pannello di cui hai bisogno è Impostazioni-> Rete-> Port Forwarding, e il mio ora appare come mostrato a: imgur.com/BjGh3N2
user7543

38
Questo NON funzionerà se hai già ssh in esecuzione sul tuo host perché le porte si sovrappongono. Reindirizza la porta da 127.0.1.1:2222 a 10.0.2.X: 22 e quindi esegui 'ssh 127.0.1.1 -p 2222' dal tuo host '
dzlatkov

8
Inoltre, assicurati di avere openssh-server installato sul sistema operativo client. sudo apt-get install openssh-server
Illuminati

17
Ho appena avuto questo problema da solo - grazie per la spiegazione. Ho praticamente seguito quello che hai detto. Sono andato su Impostazioni e la mia connessione ha mostrato 'NAT'. Ho fatto clic sull'opzione "port forwarding" nella parte inferiore dello schermo. Gli ho dato un nome "PuTTY-port-fwd", protocollo TCP, host host 127.0.0.1 porta host 2222 guest IP 10.0.2.15 porta guest 22. Ho quindi lanciato PuTTY e l'ho impostato su 127.0.0.1 porta 2222 e mi sono collegato a il mio OpenSUSE vm. Grazie ragazzi, spero che questo possa aiutare chiunque in futuro ;-)
BubbleMonster,

3
Questo ha funzionato per me, anche se ho dovuto dire a VirtualBox di aprire la porta 2222 su 127.0.0.1. Quindi sono stato in grado di accedere utilizzandossh -p 2222 user@127.0.0.1
mchen.ja il

44

Volevo usare lo stucco per connettermi al mio Ubuntu su una scatola virtuale (per motivi di comfort, il VB è semplicemente strano. Non posso lavorare a meno che non sia su un terminale adeguato). Comunque,

  1. Assicurati che il client ssh sia installato sul tuo Linux. In caso contrario, installarlo sudo apt install ssh.
  2. Spegni il sistema operativo.
  3. Ora sul tuo VB vai Settings -> Network ->su Adapter 1scegli Host-only adapter-> clicca OK.
  4. Ora avvia il tuo sistema operativo. Corri ifconfig; ora l'indirizzo interno è il tuo IP.
  5. Usa questo ed eseguilo sul tuo mastice. Accedi con le tue credenziali.

L'unico svantaggio dell'utilizzo dell'adattatore solo host è che il sistema operativo guest non avrà accesso a una rete più ampia (ad es. Internet).

Se è inoltre necessario che la macchina virtuale disponga dell'accesso a Internet, lasciare l'adattatore 1 come NAT e abilitare l'adattatore 2, configurato come adattatore solo host. Ciò consentirà alla VM di connettersi a Internet tramite NAT, nonché di stabilire una connessione locale al proprio Host utilizzando solo l'host.


4
"bridged" inserirà l'ip nella tua interfaccia locale e collegherà l'accesso a Internet più grande
Duke,

2
Il vantaggio di utilizzare due interfacce, come descritto qui, su bridge, è che non si fa affidamento sul server dhcp locale che accetta le richieste. La maggior parte dei server DHCP in luoghi pubblici (aeroporto, aeroplani, hotel e persino la maggior parte delle reti aziendali) non offrirà un secondo ip tramite lo stesso adattatore wifi, quindi una VM con bridge non funzionerà in quell'ambiente. Ecco un ottimo step-by-step su come impostare questa particolare configurazione: christophermaier.name/2010/09/01/…
Yves Dorfsman,

Funziona come un incantesimo, ma dovresti mettere l'adattatore 2 sulla terza opzione in modo che le persone lascino solo il NAT
user3502626

grazie mille.
Luca,

grazie mille. ma quando cambio l'impostazione di Rete Ubuntu da NATa host only adapternon riesco più a collegarmi a Internet, nessuna soluzione?
Luca,

19

Per prima cosa devi decidere se la tua VM si è connessa al tuo computer host tramite una connessione bridge o tramite un NAT, ma in un altro modo dovrai mettere l'indirizzo IP della VM in putty per poterti connettere all'ip, nel terminale VM esegui questo comando per mostrare l'indirizzo IP della macchina (e no 127.0.0.1 non è l'indirizzo IP della macchina)

VM # ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:d9:16:b3 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.1 scope global eth0
       valid_lft forever preferred_lft forever

in questo caso il mio indirizzo IP sarà entro il 10.0.2.15,

Prima prova ad assicurarti di poter comunicare a livello base con la VM, apri una finestra terminale sul tuo host e prova a eseguire il ping della VM

HOST # ping 10.0.2.15

PING 10.0.2.15 (10.0.2.15) 56(84) bytes of data.
64 bytes from 10.0.2.15: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 10.0.2.15: icmp_seq=2 ttl=64 time=0.110 ms
64 bytes from 10.0.2.15: icmp_seq=3 ttl=64 time=0.099 ms

Se ottieni il risultato di una formica, assicurati di avere un servizio ssh in esecuzione sulla VM, nel terminale sul tuo tipo di VM come root,

VM # netstat -lnpt | grep 22
tcp   0  0  0.0.0.0:22  0.0.0.0:*  LISTEN  2361/sshd

Questo dice che abbiamo un servizio / processo con PID (2361) chiamato sshd (demone OpenSSH) che ascolta la porta 22.

Puoi verificare se il servizio funziona correttamente provando a inviarlo dalla VM stessa,

VM # ssh 127.0.0.1

Successivamente non devi assicurarti di non bloccare la porta 22 nel tuo firewall / iptables, non ci posso credere, ma dai un'occhiata comunque. Nella VM digita questo comando per mostrarti gli iptables,

VM # iptables -nvL INPUT

nell'output dovresti avere una linea come questa:

0  0  ACCEPT  tcp  --  *  *  0.0.0.0/0  0.0.0.0/0  tcp  dpt:22  ctstate  NEW

Ho provato quello, e apparentemente il mio indirizzo IP è 10.0.2.15. Ho provato a inserirlo in Putty e ho connection timed outnuovamente riscontrato l' errore. Ho anche provato il nvLcomando di cui parli, e ottengo un sacco di (per mancanza di una parola migliore) - Chain INPUT (policy accept......, chain FORWARD.....ecc.
wickywills,

Riscrivo la mia risposta con alcuni altri punti che puoi controllare, per favore fatemelo sapere.
Rabin,

2
Cosa succede se il ping 10.0.2.15 è scaduto? Io uso NAT.
Dan Dascalescu,


Per comodità: iptables -A INPUT -p tcp --dport ssh -j ACCEPTconsentirà il traffico in entrata se non vedi tcp nei tuoi iptables.
Eric Hodgins,

15

La mia risoluzione era simile a quella della T romana, tuttavia avevo bisogno di aggiungere qualche passaggio in più. Nel mio caso avevo Ubuntu Server 14 VM in esecuzione su un desktop Windows 8 nel dominio Windows 2008. Se provassi NAT o Bridge potrei accedere a Internet ma non riesco a collegarmi tramite SSH.

Se avessi provato Host Only Adapter, ciò mi avrebbe permesso di utilizzare SSH ma non avrei potuto accedere a Internet.

Ho provato anche il port forwarding e nessuna gioia. Ha aperto Wireshark e non ha trovato la VM.

Quindi la mia soluzione era quella di aggiungere una seconda scheda di rete.

Metodo

Con VM spento

  1. Fai clic su Impostazioni> Rete Fai clic su Scheda 1 e scegli Scheda con ponte
  2. Fare clic su Adapter 2 e selezionare Host Only Adapter
  3. Fai clic su File> Preferenze> Reti in Reti NAT se non vedi una rete NAT fai clic sull'icona + per aggiungere la rete NAT.
  4. Fai clic su Reti solo host se non vedi una rete solo host fai clic sull'icona + per aggiungerne una

Avvia VM

  1. Per vedere la scheda di rete è necessario digitare

    ifconfig -a
    
  2. Potresti vedere che la scheda di rete è stata aggiunta con un indirizzo mac ma non un IP?

  3. In tal caso, è necessario modificare / etc / network / interfaces per configurare DHCP. Esempio sotto usando VI / VIM ma puoi usare l'editor di tua scelta

    sudo vi /etc/network/interfaces
    
  4. aggiungi le linee

    auto eth1
    iface eth1 inet dhcp
    
  5. salva ed esci dal file.
  6. Quindi provare a riavviare il servizio di rete utilizzando il comando seguente

    sudo service networking restart
    
  7. O se fallisce, riavvia la VM.
  8. Una volta riavviato, digita qui sotto per vedere se a eth1 è stato assegnato un indirizzo IP

    ifconfig -a
    
  9. in tal caso, vedere se è possibile SSH sulla VM

Avevo provato la tua soluzione, ma nessun IP è stato assegnato a una nuova interfaccia. Inoltre, ho abilitato DHCP nel mio VBox.
Athlan,

12

Le seguenti istruzioni hanno funzionato con Ubuntu 14.04 e Oracle VirtualBox 4.3.30.

Fallo in VirtualBox:

  1. Fare clic con il tasto destro del mouse sulla macchina virtuale, selezionare "Impostazioni", quindi selezionare "Rete".

  2. Accanto a "Attaccato a", seleziona "Adattatore solo host". Come nota a margine, funzionerà anche "Bridged Adapter", controlla la documentazione di VirtualBox per maggiori dettagli su ciascuna opzione.

Fallo all'interno della tua macchina virtuale:

  1. Trova il tuo indirizzo IP di rete aprendo un terminale e digitando ifconfig. Osservare l'indirizzo IP visualizzato accanto a eth0, sotto "inet addr". Puoi anche vedere il tuo indirizzo IP se fai clic sull'icona Rete nell'angolo in alto a destra del desktop, quindi seleziona "Informazioni sulla connessione".

  2. Installa openssh-server digitando quanto segue sul terminale:

    sudo apt-get install openssh-server
    
  3. Nel caso, riavvia la macchina virtuale.

Ora puoi connetterti da PuTTY usando l'indirizzo IP dal passaggio 1 sopra e la porta 22.


2

Per Ubuntu 18.04 e VirtualBox 5.2:

  1. Creare un'interfaccia di rete host

    io. Su Virtualbox, fai clic su File/ Host Network Manager.

    ii. Se non si dispone già di una scheda di rete host (impostazione predefinita vboxnet0), fare clic su Create.

  2. Abilita le impostazioni dell'adattatore solo host per VM

    io. Su Virtualbox, fare clic con il tasto destro sulla VM e selezionare Settings.

    ii. Fare clic Networke selezionare Adapter 2.

    iii. Fare clic Enable Network Adapter.

    iv. Sotto Attached to:seleziona Host-only Adapter. Dovrebbe apparire il nome dell'adattatore creato nel passaggio 1 (impostazione predefinita vboxnet0).

  3. Configurare le impostazioni di rete nella VM

    io. Avviare il VM e verificare che l'interfaccia è stata aggiunta: ip a. Cerca l'interfaccia che non ha un inetindirizzo. Sul mio, lo era enp0s8.

    ii. Modifica /etc/netplan/01-netcfg.yaml. es sudo vi /etc/netplan/01-netcfg.yaml.

    iii. Sotto le impostazioni per l'adattatore originale, aggiungi i dettagli di configurazione:

    enp0s8:
        addresses: [192.168.56.2/24]
        gateway4: 192.168.56.1
        dhcp4: no
    

    Questo assegna un indirizzo IP statico per la tua VM per comodità di SSH. Se invece vuoi dhcpgestire l'indirizzamento, lascia fuori la configurazione dell'indirizzo e del gateway e imposta dhcp4su yes.

    iv. Ricaricare il file di configurazione: sudo netplan apply.

  4. SSH nella tua VM

    io. Se non si è installato sshnella macchina virtuale: sudo apt install ssh.

    ii. Dalla vostra macchina host, SSH nella VM: ssh <username>@192.168.56.2.


Grazie, mi hai salvato la giornata!
Anber
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.