Създадох виртуална машина на сървъра Ubuntu, инсталирах OpenSSH и сега се опитвам да се свържа с него с помощта на Putty. В Putty, под "Име на хоста", поставих "Ubuntu", тъй като така мислех, че се нарича, когато настройвах виртуалната машина. Въпреки това получавам грешката: "Connection Timed Out".
Опитах се също така да поставя "127.0.0.1" в името на хоста в Putty и просто получавам "Connection Refused". Имайте предвид, че съм направил пренасочването на портовете за SSH и HTTP в рамките на Oracle VM, така че не знам как да го задействам.
VirtualBox ще създаде частна мрежа (10.0.2.x), която ще бъде свързана с мрежата на хоста ви чрез NAT. (Освен ако не е конфигурирано друго.)
Това означава, че не можете да осъществите директен достъп до хост от частната мрежа от мрежата на хоста. За да го направите, се нуждаете от пренасочване на портове. В мрежовите предпочитания на вашата виртуална машина можете например да конфигурирате VirtualBox да отвори порт 22 на 127.0.1.1 (loopback адрес на вашия хост) и да препраща всеки трафик към порт 22 на 10.0.2.1 (вътрешния адрес на вашата виртуална машина)
По този начин можете да насочите putty към порт 22 на 127.0.1.1 и VirtualBox ще пренасочи тази връзка към вашата ВМ, където нейният ssh демон ще отговори на нея, позволявайки ви да влезете.
Исках да използвам Putty, за да се свържа с моя Ubuntu на виртуална кутия (причини за комфорт, VB е просто странно. Не мога да работя, ако не е на подходящ терминал). Както и да е,
sudo apt install ssh
.Settings
->``Network
->
на Adapter 1
изберете Host-only adapter
->кликнете върху OK
.ifconfig
; сега inet адресът е вашият IP.Единственият недостатък на използването на адаптер само за хост е, че вашата гостуваща операционна система няма да има достъп до по-широката мрежа (напр. до интернет).
Ако трябва и вашата виртуална машина да има достъп до интернет, оставете адаптер 1 като NAT и включете адаптер 2, конфигуриран като адаптер само за хост. Това ще позволи на вашата виртуална машина да се свързва с интернет, използвайки NAT, както и да осъществява локална връзка с вашия хост, използвайки Host-Only.
Първо трябва да решите дали вашата виртуална машина е свързана с хост машината ви чрез мостова връзка или чрез NAT, но и в двата случая ще трябва да поставите IP адреса на виртуалната машина в putty, за да можете да се свържете с ip, в терминала на виртуалната машина изпълнете тази команда, за да ви покаже IP адреса на машината. (и не 127.0.0.1 не е IP адресът на машината)
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
в този случай моят IP адрес ще бъде 10.0.2.15,
Първо се опитайте да се уверите, че можете да комуникирате на базово ниво с виртуалната машина, отворете терминален прозорец на вашия хост и опитайте да пингнете виртуалната машина
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
Ако получите резултат ant, тогава се уверете, че на виртуалната машина е стартирана услугата ssh, в терминала на виртуалната машина въведете като root,
VM # netstat -lnpt | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2361/sshd
Това показва, че имаме услуга/процес с PID(2361), наречен sshd (OpenSSH daemon), който слуша на порт 22.
Можете да проверите дали услугата работи правилно, като се опитате да се свържете с нея от самата виртуална машина,
VM # ssh 127.0.0.1
След това трябва да се уверите, че не блокирате порт 22 във вашата защитна стена/iptables, не мога да повярвам, но все пак проверете. Във виртуалната машина въведете тази команда, за да ви покаже iptables,
VM # iptables -nvL INPUT
в изхода трябва да има ред като този:
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ctstate NEW