Virtualbox,从 Ubuntu 主机到 Ubuntu 客户机的 ssh:连接被拒绝

Virtualbox,从 Ubuntu 主机到 Ubuntu 客户机的 ssh:连接被拒绝

我正在尝试连接到我的虚拟机但不断收到以下错误:

ssh: connect to host 192.168.56.101 port 22: Connection refused

我的主机操作系统是全新安装的 Ubuntu 18.04,虚拟机是旧的 Ubuntu 14.04(虚拟机不是全新安装的;相反,我创建了一个新的虚拟机,然后.dvi从我的旧笔记本电脑导入虚拟硬盘文件,在旧笔记本电脑中ssh运行没有任何问题)。

我可以ping无包裹丢失地到达机器,并且我认为一切都配置正确。

在虚拟机上,我有两个适配器,一个是默认的 NAT,没有任何端口转发规则,另一个是通常的vboxnet0仅主机适配器。这种vboxnet0仅主机适配器是通过转到File -> Host Network Manager并添加新条目创建的。DHCP 服务器已禁用,IP 地址/掩码为 192.168.56.101/24:

在此处输入图片描述

在此处输入图片描述

ifconfig我的虚拟机的输出是:

在此处输入图片描述

这就是它的内容/etc/network/interfaces

在此处输入图片描述

ifconfig我的主机的输出是:

enp61s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 00:d8:61:06:78:ce  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 2430  bytes 204819 (204.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2430  bytes 204819 (204.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vboxnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.101  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::800:27ff:fe00:0  prefixlen 64  scopeid 0x20<link>
        ether 0a:00:27:00:00:00  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 225  bytes 35362 (35.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlo1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.181.127.144  netmask 255.255.0.0  broadcast 10.181.255.255
        inet6 fe80::e7bf:1f7f:8578:e980  prefixlen 64  scopeid 0x20<link>
        ether 98:3b:8f:d8:06:17  txqueuelen 1000  (Ethernet)
        RX packets 90490  bytes 44130738 (44.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15323  bytes 2985782 (2.9 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

并且它etc/network/interfaces是默认的:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

在虚拟机中,ssh服务器处于start/running状态并且ufw没有阻止22端口:

在此处输入图片描述

但是,从我的主机上看:

$ ssh -vvv 192.168.56.101
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "192.168.56.101" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to 192.168.56.101 [192.168.56.101] port 22.
debug1: connect to address 192.168.56.101 port 22: Connection refused
ssh: connect to host 192.168.56.101 port 22: Connection refused

笔记:向 NAT 适配器添加端口转发规则,除非我做错了,否则并不能解决问题;此外,在我的旧笔记本电脑中我没有端口转发规则。

答案1

是的,正如@Kenster 在评论中所说,主机和客户机在vboxnet0网络内分配了相同的 IP。我刚刚删除了vboxnet0接口,然后使用默认选项重新创建并启用了 DHCP 服务器。虚拟机已经配置了静态 IP,/etc/network/interfaces因此我不需要进一步限制vboxnet0

这样,启用 DHCP 后,主机将获得与网络内的客户机(静态 .101)不同的 IP(.1)vboxnet0

发生错误connection refused的原因是,由于服务器 IP 与本地 IP 匹配,客户端试图连接到本地主机而不是虚拟机,因此,由于我没有安装任何 ssh 服务器,所以没有人监听端口 22。

相关内容