在我的笔记本电脑上,我在虚拟机上运行了两个 Ubuntu 服务器作为客户机。它们通过主机专用适配器连接,该适配器的 IP 地址为“192.168.56.1”,两个客户机服务器的 IP 地址设置为“192.168.56.101”和“192.168.56.102”。每个服务器都可以 ping 通对方,但不能 ssh 进入对方。当我尝试 ssh 到另一台客户机时,出现以下错误:
ssh: connection to host 192.168.56.102 port 22: Connection refused
令人困惑的是(至少对我来说)我可以通过使用以下命令在主机笔记本电脑上的主机专用适配器中进行 ssh:
ssh [email protected]
我不知道下一步该尝试什么。我尝试重新安装 ssh/sshd。结果却出现一大堆错误,但我想如果我能 ssh 网络上的某样东西,那我也应该能 ssh 到其他东西上,对吧?但无论如何,我肯定忽略了一些东西。
我尝试使用以下命令禁用来宾和主机上的 iptables
sudo ufw disable
然后用在其中一位客人身上
ssh [email protected]
并得到
ssh: connect to host 192.268.56.101 port 22: Connection refused
<-更新->
ssh -v [email protected]
给出以下输出:
OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL1.0.1 14 Mar 1012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 192.168.56.101 [192.268.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
<-更新->
我的 /etc/hosts 文件在所有客户机上看起来像:
127.0.0.1 localhost
127.0.1.1 ubuntu
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
两个客户机没有 /etc/hosts.allow 和 /etc/hosts.deny 文件。
ifconfig -a 给我:
eth0 Link encap:Ethernet HWaddr 08:00:27:63:c5:71
inet addr:192.168.56.102 Bcast:192.168.56.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe63:c571/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15 errors:0 dropped:0 overruns:0 frame:0
TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4658 (4.6 KB) TX bytes:1790 (1.7 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
和
eth0 Link encap:Ethernet HWaddr 08:00:27:ce:7c:1e
inet addr:192.168.56.101 Bcast:192.168.56.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fece:7c1e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4718 (4.7 KB) TX bytes:1790 (1.7 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1184 (1.1 KB) TX bytes:1184 (1.1 KB)
<-更新->
sudo netstat -pant |grep :22
没有输出
<-更新->
另外,当我尝试让一个盒子自己通过 SSH 连接时,我得到了相同的端口 22:连接被拒绝错误。
sshd 在端口 22 上运行(已选中)防火墙禁用(已选中)网络:ping 正常(已选中)ssh localhost 正常(已选中)
但是,我无法从另一台机器 ssh 该主机。
答案1
由于您收到了拒绝消息,我可以假设您实际上看到数据包正在到达另一台服务器,我怀疑 ssh 没有安装。
在两台服务器上运行:
sudo apt-get install openssh-server
一旦安装了 ssh 服务器,它就应该正常工作。
<-- 编辑 -->
我看到您已确认服务已安装,因此请忽略上述内容,它很可能是 iptables,尽管它不应该在 Ubuntu 上默认配置。如果您运行的是 12.04,您可以通过键入以下内容暂时禁用防火墙:
sudo ufw disable
看看是否有帮助。
另外,你说的“一大堆错误”是什么意思?你尝试过使用还是不使用 sudo 来安装?
答案2
尝试使用ssh -v IP地址,这样您就可以看到连接过程中可能出现的问题!
<<-- 编辑 -->>
在主机 101 上使用此命令并发布结果
sudo netstat -plant | grep ssh
基本上这个命令显示你机器上的所有网络连接,我想看看 ssh 是否在不同的端口尊重 22
答案3
您确定您的 ssh_config 文件中没有代理命令或类似内容吗?
通过查看您的输出,您可以发现调试输出和错误消息中的 IP 地址存在问题:您的 IP 地址不是 192.168.xxx.xxx,而是 192。268.xxx.xxx
您应该检查您的网络配置:
- 每个主机上“ifconfig -a”命令的输出是什么?
- 您可以检查您的 /etc/hosts 文件吗?
- 你可以检查一下 /etc/hosts.allow 和 /etc/hosts.deny 文件中是否有内容
- ...当然,正如建议的那样,你可以关闭 iptables
答案4
我相信“仅主机”选项会在客户机和服务器之间创建专用链接,并且使用仅主机连接的虚拟机在网络上不应该互相看到对方。
您要么必须在 Linux 中桥接它们,要么使用其他网络选项。
我相信,如果您将两个虚拟机的网络选项都更改为“内部网络”并对两个虚拟机使用相同的名称,就可以实现您想要实现的目标。
编辑:根据 VirtualBox 文档,“仅主机”选项应该允许虚拟机相互通信,但仍然可以尝试一下。
编辑2:哦 - 我有点忽略了机器之间能够互相 ping 的事实。在这种情况下,我上面写的内容无关紧要。