Próba połączenia SSH z lokalnym VM Ubuntu za pomocą Putty

145

Skonfigurowałem maszynę wirtualną serwera Ubuntu, zainstalowałem OpenSSH i teraz próbuję połączyć się z nim za pomocą Putty. W Putty, pod „Host name”, umieściłem „Ubuntu”, biorąc pod uwagę, że tak to się nazywało, kiedy konfigurowałem maszynę wirtualną. Jednak pojawia się tylko błąd: „Przekroczono limit czasu połączenia”.

Próbowałem także wpisać „127.0.0.1” w nazwie hosta w Putty i po prostu dostać „odmowa połączenia”. Pamiętaj, że wykonałem przekierowanie portów dla SSH i HTTP w Oracle VM, więc nie mam pojęcia, jak je uruchomić.

wickywills
źródło
Most / host FWIW tylko dla mnie nie działał, ale mogłem go obejść, w zasadzie, tylko SSH'ing „out” (w końcu scp może działać w obie strony), więc nie potrzebowałem dostępu SSH w ramach gościa.
rogerdpack,

Odpowiedzi:

183

VirtualBox utworzy sieć prywatną (10.0.2.x), która zostanie podłączona do sieci hosta za pomocą NAT . (O ile nie skonfigurowano inaczej.)

Oznacza to, że nie można uzyskać bezpośredniego dostępu do żadnego hosta sieci prywatnej z sieci hosta. Aby to zrobić, potrzebujesz przekierowania portów. W preferencjach sieciowych swojej VM można na przykład skonfigurować VirtualBox, aby otworzyć port 22 na 127.0.1.1 (A sprzężenia zwrotnego adresu hosta) i przekazuje żadnego ruchu na porcie 22 10.0.2.1 (wewnętrzny adres swojej VM)

W ten sposób możesz wskazać putty na port 22 z 127.0.1.1, a VirtualBox przekieruje to połączenie na twoją maszynę wirtualną, gdzie demon ssh mu odpowie, pozwalając ci się zalogować.

michas
źródło
20
Dzięki, to zadziałało dla mnie. Od cygwina mogę teraz ssh [email protected]i jestem w. Potrzebny panel to Ustawienia-> Sieć-> Przekazywanie portów, a mój wygląda teraz tak, jak pokazano na: imgur.com/BjGh3N2
user7543
38
NIE zadziała to, jeśli masz już ssh na swoim hoście, ponieważ porty się pokrywają. Przekieruj port 127.0.1.1:2222 na 10.0.2.X: 22, a następnie uruchom 'ssh 127.0.1.1 -p 2222' z twojego hosta
dzlatkov
8
Upewnij się również, że masz zainstalowany serwer openssh w systemie operacyjnym klienta. sudo apt-get install openssh-server
Illuminati
17
Właśnie miałem ten problem - dzięki za wyjaśnienie. Zasadniczo śledziłem to, co powiedziałeś. Poszedłem do Ustawień i moje połączenie pokazało „NAT”. Kliknąłem opcję „przekierowanie portów” u dołu ekranu. Nadałem mu nazwę „PuTTY-port-fwd”, protokół TCP, host IP 127.0.0.1 host 2222 gość IP 10.0.2.15 gość port 22. Następnie uruchomiłem PuTTY i ustawiłem go na port 127.0.0.1 2222 i połączyłem się z mój OpenSUSE vm. Dzięki chłopaki, mam nadzieję, że to pomoże każdemu w przyszłości ;-)
BubbleMonster
3
To działało dla mnie, chociaż musiałem powiedzieć VirtualBox, aby otworzył port 2222 na 127.0.0.1. Potem mogłem się zalogować za pomocąssh -p 2222 [email protected]
mchen.ja
44

Chciałem użyć Kit, aby połączyć się z moim Ubuntu na wirtualnym pudełku (ze względów wygody, VB jest po prostu dziwne. Nie mogę pracować, dopóki nie jest na odpowiednim terminalu). Tak czy siak,

  1. Upewnij się, że klient ssh jest zainstalowany w systemie Linux. Jeśli nie, zainstaluj sudo apt install ssh.
  2. Wyłącz system operacyjny.
  3. Teraz na VB iść do Settings -> Network ->dnia Adapter 1wyboru Host-only adapter-> kliknij OK.
  4. Teraz uruchom system operacyjny. Uruchom ifconfig; teraz adres inet to twój adres IP.
  5. Użyj tego i uruchom go na swojej szpachli. Zaloguj się przy użyciu swoich poświadczeń.

Jedyną wadą używania adaptera samego hosta jest to, że system operacyjny gościa nie będzie miał dostępu do szerszej sieci (np. Internetu).

Jeśli potrzebujesz również swojej maszyny wirtualnej, aby mieć dostęp do Internetu, pozostaw Adapter 1 jako NAT i włącz Adapter 2, skonfigurowany jako adapter Tylko host. Umożliwi to maszynie wirtualnej połączenie się z Internetem za pomocą NAT, a także nawiąże lokalne połączenie z hostem za pomocą hosta.

Priya_user1907390
źródło
4
„zmostkowany” spowoduje umieszczenie adresu IP na interfejsie lokalnym i dostęp do mostu do większego Internetu
Duke
2
Zaletą korzystania z dwóch interfejsów, jak tutaj opisano, w stosunku do mostków, jest to, że nie polegasz na lokalnym serwerze dhcp przyjmującym twoje żądania. Większość serwerów dhcp w miejscach publicznych (ariport, samoloty, hotele, a nawet większość sieci firmowych) nie oferuje drugiego adresu IP za pośrednictwem tego samego adaptera Wi-Fi, więc zmostkowana maszyna wirtualna nie będzie działać w tym środowisku. Oto naprawdę dobry krok po kroku, jak skonfigurować tę konkretną konfigurację: christophermaier.name/2010/09/01/…
Yves Dorfsman
Działa jak urok, ale należy ustawić Adapter 2 na 3 opcję, aby ludzie zostawili NAT w spokoju
user3502626
Dziękuję bardzo.
Łukasz
Dziękuję bardzo. ale kiedy zmienię ustawienie Ubuntu Network z NATna, host only adapternie może już połączyć się z Internetem, jakieś rozwiązanie?
Łukasz
19

Najpierw musisz zdecydować, czy maszyna wirtualna jest podłączona do komputera hosta za pośrednictwem połączenia mostkowego, czy NAT, ale w sposób eteryczny musisz umieścić adres IP maszyny wirtualnej w putty, aby móc połączyć się z ip, w uruchomieniu terminala maszyny wirtualnej to polecenie pokazuje adres IP urządzenia (a nr 127.0.0.1 nie jest adresem IP urządzenia)

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

w tym przypadku mój adres IP będzie do 10.0.2.15,

Najpierw upewnij się, że możesz komunikować się na poziomie podstawowym z maszyną wirtualną, otwórz okno terminala na hoście i spróbuj pingować maszynę wirtualną

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

Jeśli otrzymasz wynik ant, upewnij się, że masz usługę ssh uruchomioną na maszynie wirtualnej, w terminalu na maszynie wirtualnej jako root,

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

Mówi to, ponieważ mamy usługę / proces z PID (2361) o nazwie sshd (demon OpenSSH) nasłuchujący na porcie 22.

Możesz sprawdzić, czy usługa działa poprawnie, próbując ssh do niej z maszyny wirtualnej,

VM # ssh 127.0.0.1

Następnie musisz upewnić się, że nie blokujesz portu 22 w swojej zaporze ogniowej / iptables, nie mogę w to uwierzyć, ale i tak sprawdź. W maszynie wirtualnej wpisz to polecenie, aby wyświetlić iptables,

VM # iptables -nvL INPUT

na wyjściu powinieneś mieć taką linię:

0  0  ACCEPT  tcp  --  *  *  0.0.0.0/0  0.0.0.0/0  tcp  dpt:22  ctstate  NEW
Rabin
źródło
Próbowałem tego i najwyraźniej mój adres IP to 10.0.2.15. Próbowałem wprowadzić to do Putty i connection timed outponownie dostałem błąd. Próbowałem także nvLpolecenia, o którym wspomniałeś, i otrzymałem Chain INPUT (policy accept......chain FORWARD.....
mnóstwo
Przepisuję swoją odpowiedź, dodając kilka punktów, które możesz sprawdzić. Daj mi znać.
Rabin
2
Co się stanie, jeśli ping 10.0.2.15 przekroczy limit czasu? Używam NAT.
Dan Dascalescu,
Przekierowanie portów było odpowiedzią.
Dan Dascalescu,
Dla wygody: iptables -A INPUT -p tcp --dport ssh -j ACCEPTzezwoli na ruch przychodzący, jeśli nie widzisz tcp w iptables.
Eric Hodgins,
15

Moja rozdzielczość była podobna do Roman T, jednak musiałem dodać kilka dodatkowych kroków. W moim przypadku miałem maszynę Wirtualną Ubuntu Server 14 działającą na pulpicie Windows 8 w domenie Windows 2008. Gdybym spróbował NAT lub Bridge, mógłbym uzyskać dostęp do Internetu, ale nie mogłem połączyć się przez SSH.

Gdybym spróbował adaptera hosta tylko wtedy pozwoliłbym na SSH do komputera, ale nie miałbym dostępu do Internetu.

Próbowałem też przekierowania portów i nie miałem radości. Otworzyłem Wireshark i po prostu nie znalazłem VM.

Więc moim rozwiązaniem było dodanie drugiej karty sieciowej.

metoda

Z wyłączoną maszyną wirtualną

  1. Kliknij Ustawienia> Sieć Kliknij Adapter 1 i wybierz Bridged Adapter
  2. Kliknij Adapter 2 i wybierz Adapter Tylko host
  3. Kliknij opcję Plik> Preferencje> Sieci w sieci NAT, jeśli nie widzisz sieci NAT, kliknij ikonę +, aby dodać sieć NAT.
  4. Kliknij Sieci tylko hosta, jeśli nie widzisz sieci hosta, kliknij ikonę +, aby ją dodać

Uruchom maszynę wirtualną

  1. Aby zobaczyć kartę sieciową, musisz wpisać

    ifconfig -a
    
  2. Możesz zobaczyć, że karta sieciowa została dodana z adresem Mac, ale nie ma adresu IP?

  3. Jeśli tak, musisz edytować / etc / network / interfaces, aby skonfigurować DHCP. Przykład poniżej z użyciem VI / VIM, ale możesz użyć dowolnego edytora

    sudo vi /etc/network/interfaces
    
  4. dodaj linie

    auto eth1
    iface eth1 inet dhcp
    
  5. zapisz i zamknij plik.
  6. Następnie spróbuj ponownie uruchomić usługę sieciową, używając poniższego polecenia

    sudo service networking restart
    
  7. Lub jeśli to się nie powiedzie, uruchom ponownie maszynę wirtualną.
  8. Po ponownym uruchomieniu wpisz poniżej, aby sprawdzić, czy eth1 ma przydzielony adres IP

    ifconfig -a
    
  9. jeśli tak, sprawdź, czy możesz SSH na maszynie wirtualnej
mrjamesmyers
źródło
Wypróbowałem twoje rozwiązanie, ale do nowego interfejsu nie przypisano adresu IP. Co więcej, mam włączony DHCP w moim VBoxie.
Athlan
12

Poniższe instrukcje działały z Ubuntu 14.04 i Oracle VirtualBox 4.3.30.

Zrób to w VirtualBox:

  1. Kliknij maszynę wirtualną prawym przyciskiem myszy, wybierz „Ustawienia”, a następnie wybierz „Sieć”.

  2. Obok „Attached to” wybierz „Adapter host-only”. Na marginesie, „Bridged Adapter” również będzie działał, sprawdź dokumentację VirtualBox, aby uzyskać więcej szczegółów na temat każdej opcji.

Zrób to w maszynie wirtualnej:

  1. Znajdź adres IP swojej sieci, otwierając terminal i wpisując ifconfig. Obserwuj adres IP wyświetlany obok eth0, pod „inet addr”. Możesz również zobaczyć swój adres IP, klikając ikonę Sieć w prawym górnym rogu pulpitu, a następnie wybierając „Informacje o połączeniu”.

  2. Zainstaluj openssh-server, wpisując w terminalu:

    sudo apt-get install openssh-server
    
  3. Na wszelki wypadek uruchom ponownie maszynę wirtualną.

Teraz możesz połączyć się z PuTTY za pomocą adresu IP z kroku 1 powyżej i portu 22.

Roman T.
źródło
2

W przypadku Ubuntu 18.04 i VirtualBox 5.2:

  1. Utwórz interfejs sieciowy hosta

    ja. W Virtualbox kliknij File/ Host Network Manager.

    ii. Jeśli nie masz jeszcze karty sieciowej hosta (domyślnie vboxnet0), kliknij Create.

  2. Włącz ustawienia adaptera tylko hosta dla maszyny wirtualnej

    ja. W Virtualbox kliknij prawym przyciskiem myszy maszynę wirtualną i wybierz Settings.

    ii. Kliknij Networki wybierz Adapter 2.

    iii. Kliknij Enable Network Adapter.

    iv. Pod Attached to:wybierz Host-only Adapter. Powinna pojawić się nazwa adaptera utworzonego w kroku 1 (domyślnie vboxnet0).

  3. Skonfiguruj ustawienia sieciowe na maszynie wirtualnej

    ja. Zacznij swoją VM i sprawdzić, który interfejs dodano: ip a. Poszukaj interfejsu, który nie ma inetadresu. Tak było u mnie enp0s8.

    ii. Edit /etc/netplan/01-netcfg.yaml. np sudo vi /etc/netplan/01-netcfg.yaml.

    iii. W ustawieniach oryginalnego adaptera dodaj szczegóły konfiguracji:

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

    To przypisuje statyczny adres IP dla maszyny wirtualnej dla wygody SSH. Jeśli dhcpzamiast tego chcesz obsłużyć adresowanie, pomiń konfigurację adresu i bramy i ustaw dhcp4na yes.

    iv. Odśwież plik konfiguracyjny: sudo netplan apply.

  4. SSH na maszynę wirtualną

    ja. Jeśli nie masz zainstalowanego sshna maszynie wirtualnej: sudo apt install ssh.

    ii. Z komputera hosta, SSH do VM: ssh <username>@192.168.56.2.

ooknosi
źródło
Dzięki, uratowałem mój dzień!
anber