![无法通过 SSH 连接到虚拟机但可以 Ping 连接](https://linux22.com/image/559857/%E6%97%A0%E6%B3%95%E9%80%9A%E8%BF%87%20SSH%20%E8%BF%9E%E6%8E%A5%E5%88%B0%E8%99%9A%E6%8B%9F%E6%9C%BA%E4%BD%86%E5%8F%AF%E4%BB%A5%20Ping%20%E8%BF%9E%E6%8E%A5.png)
我在 Ubuntu KVM 主机上有两个虚拟机 — www.example.com 和 uat.example。我可以 ping 和 SSH 到我的 UAT 服务器,但即使我可以 ping 它,也无法 SSH 到我的 WWW 服务器。这两个虚拟机之间唯一的不同就是 IP 组。
- UAT服务器的IP是:59.134.127.155
- WWW服务器的IP是:168.127.204.236
- 主机KVM服务器的IP为:59.134.127.157
主机 KVM 服务器上有一座桥,所有连接都通过它。
这是我的 /etc/network/interfaces 文件:
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet manual
# The primary bridge interface
auto br0
iface br0 inet static
address 59.134.127.157
netmask 255.255.255.248
gateway 59.134.127.153
bridge_ports eth0
bridge_stp on
bridge_fd 0
bridge_maxwait 0
以下是 KVM 上链接的输出:
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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether bc:ae:c5:07:0e:d3 brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether bc:ae:c5:07:0e:d3 brd ff:ff:ff:ff:ff:ff
4: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 1e:85:05:ba:0e:2e brd ff:ff:ff:ff:ff:ff
10: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
link/ether fe:16:36:77:d0:17 brd ff:ff:ff:ff:ff:ff
16: vnet2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
link/ether fe:16:36:06:4d:ba brd ff:ff:ff:ff:ff:ff
17: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
link/ether fe:16:36:cb:8c:44 brd ff:ff:ff:ff:ff:ff
以下是我在 KVM 上的默认路由:
59.134.127.152/29 dev br0 proto kernel scope link src 59.134.127.157
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
default via 59.134.127.153 dev br0 metric 100
我知道这里出了问题,因为当我从主机服务器到 UAT 服务器执行操作时traceroute
,出现了太多跳数:
traceroute to www.example.com (168.127.204.236), 30 hops max, 60 byte packets
1 59-134-127-153.cust.suomicom.fi (79.134.127.153) 4.245 ms 4.400 ms 4.388 ms
2 * * *
3 * * *
...
...
...
28 * * *
29 * * *
30 * * *
我似乎无法弄清楚这个问题,但如果你们中有人能帮助我,我将不胜感激。我相信这是由于 KVM 虚拟桥中的网络配置造成的。
谢谢
答案1
如果您可以 ping 它,则表明存在 tcp 连接;数据包可以到达目的地并返回 - 这是好的。
现在只需测试是否有 ssh 服务正在监听。
telnet server.ip 22
你应该得到类似
Trying someIPaddress...
Connected to thatIPaddress.
Escape character is '^]'.
SSH-2.0-OpenSSH_X.Y YourDistro
如果没有发生这种情况,则有可能 - 服务在目标主机上不活跃 - 服务被过滤
Nmap 可以帮助您检测服务是否被过滤;但此时我敢打赌您没有在这些主机上安装 openssh-server;只有 ssh 客户端。
您还可以使用某些工具检查这些系统
netstat -nlp | grep ssh
或者
lsof -i -n |grep ssh | grep LISTEN
如果服务处于活动状态且正在监听...