这里以 Xshell 等工具连接 Linux 虚拟机为例
对于我们使用 Xshell 等工具连接虚拟机失败,我们可以从以下的几个方面进行检查和解决
检查连接工具中的连接会话配置是否正确
对于这方面,我们要检查连接工具中连接会话配置的虚拟机 IP 地址和端口号是否正确以及连接使用的用户名和密码是否正确
在虚拟机中,查看 IP
ip addr
在连接工具中打开连接会话的属性面板,查看配置的虚拟机 IP 地址和端口号是否正确以及连接使用的用户名和密码是否正确
检查 VMware 虚拟网络配置
如果你为虚拟机配置了静态 IP,那么最好将 VMware 虚拟机网络配置中的“使用本地 DHCP 服务将 IP 地址分配给虚拟机(D)”功能关闭,避免冲突
在 VMware 的虚拟网络编辑器中,选择你使用的网络模式,然后使用管理员权限进行设置的修改,将“使用本地 DHCP 服务将 IP 地址分配给虚拟机”取消勾选,然后点击“应用”“确定”即可
检查防火墙是否开放了 22 端口
SSH 连接协议使用的端口号为 22,所以我们要检查虚拟机中的 22 号端口是否开放了,如果没有我们要对其进行开放,这里也可以选择将防火墙直接关闭(服务器不建议这么做)
开放 Linux 防火墙指定端口以及关闭防火墙可以参考:https://www.yuque.com/u27599042/gny4fg/si8l8ea4z8hkbgis
使用如下命令,查看防火墙的状态
systemctl status firewalld
使用如下命令,查看防火墙是否开放了 22 号端口
firewall-cmd --zone=public --list-ports
检查是否开启了 SSH 服务
由于 Xshell 等工具连接虚拟机使用的是 SSH 协议,所以检查虚拟机是否开启了 SSH 服务
使用如下命令查看是否开启了 SSH 服务:
systemctl status sshd
使用如下命令开启 SSH 服务:
systemctl start sshd
检查虚拟机与宿主机是否在同一局域网内
这里需要说明一下,如果你使用的虚拟机网络连接模式为 NAT,那么与之对应的本地电脑的 VMware 虚拟网卡为 VMware 8;如果你使用的虚拟机网络连接模式为仅主机,那么与之对应的本地电脑的 VMware 虚拟网卡为 VMware 1。
对于本地电脑中的虚拟机,连接不上,还有可能是由于我们的本地电脑与虚拟机不在同一个局域网内,导致我们使用 Xshell 等工具连接虚拟机时,找不到虚拟机,从而导致了失败
首先在虚拟机中,查看 IP
ip addr
然后查看 VMware 分配给我们电脑的网卡(VMware 8)的 IP 地址
我使用的虚拟机网络连接模式为 NAT,所以查看本地电脑的 VMware 8 虚拟网卡
“控制面板”=>“网络和 Internet”=>“网络和共享中心”=>“更改适配器设置”
由于子网掩码为 255.255.255.0,即 IP 地址中的前 3 个数字相同才是同一个局域网,所以此时我的本地电脑与虚拟机不在同一个局域网内
我们先在 VMware 的虚拟网络编辑中,为本地电脑和虚拟机所在的局域网指定其所在的局域网的网络网段,由于我使用的网络连接模式为 NAT,所以在 VMware 的虚拟网络编辑中选择 NAT 模式所对应的网络,修改该虚拟网络的网络网段为虚拟机所在网络网段(虚拟机的 IP 为 192.168.42.131,IP 掩码为 255.255.255.0,所以所在的网段为 192.168.42.0,IP 掩码为 255.255.255.0)
由于我的本地电脑与虚拟机不在同一个局域网内,所以现在为本地电脑的虚拟网卡 VMware 8 (这里的 VMware 8 只是电脑的一个网卡,VMware 虚拟网络编辑器中的 VMware 8 是一个网络)手动分配 IP,将其 IP 地址分配到虚拟机所在的局域网下
此时,我们再次尝试连接虚拟机,发现可以正常连接访问了