虚拟机连接Xshell的答案很简单:先保证虚拟机与宿主机网络互通,再开启SSH服务,最后用Xshell新建SSH会话即可连上。
虚拟机本身不直接提供Xshell可识别的通道,Xshell通过SSH协议远程登录虚拟机里的Linux系统,只要你把网络、端口、账号三件事搞定,整个过程五分钟内完成。
虚拟机怎么连接xshell:三步操作全流程
下面以VMware + CentOS为例,完整走一遍虚拟机连接xshell的操作路径,无论你用VirtualBox还是其他虚拟机,思路完全一致,只是个别菜单名称不同。
第一步:确认虚拟机的IP地址和网络模式
打开虚拟机终端,输入命令:
ip addr
找到类似168.x.x的地址,那就是虚拟机的IP,如果只有0.0.1,说明网卡没启动,需要检查网络适配器设置。
虚拟机的网络模式建议选桥接模式或NAT模式,桥接模式下虚拟机直接和宿主机在同一局域网,Xshell用这个IP就能连;NAT模式下虚拟机通过宿主机共享IP上网,Xshell仍然可以访问虚拟机,因为VMware虚拟网卡会在宿主机和虚拟机之间建立独立通道。
在VMware中,右键虚拟机 -> 设置 -> 网络适配器,勾选对应模式即可,修改后重启虚拟机,再执行ip addr查看新IP。
第二步:开启SSH服务并放行22端口
CentOS系统默认可能没装或没启动SSH服务,在虚拟机里执行:
systemctl status sshd
如果显示未运行,依次执行:
sudo systemctl start sshd sudo systemctl enable sshd
如果提示找不到sshd服务,先安装:
sudo yum install -y openssh-server
Ubuntu系统命令类似,用apt install openssh-server,服务名是ssh。
防火墙方面,多数虚拟机默认防火墙不拦截内网SSH,但保险起见执行:
sudo firewall-cmd --permanent --add-port=22/tcp sudo firewall-cmd --reload
Ubuntu用sudo ufw allow 22/tcp,如果能ping通但连接被拒绝,大概率就是防火墙或SSH服务没起来。
第三步:在Xshell中新建SSH会话
打开Xshell,点新建会话,填写以下内容:
- 名称:随意,CentOS虚拟机”
- 协议:SSH
- 主机:虚拟机的IP地址(上一步查到的)
- 端口号:22
点击连接,会弹出SSH安全警告,选择“接受并保存”即可,然后输入虚拟机的登录用户名和密码,连接成功。
常见坑是用户用了root,但SSH服务配置文件禁用了root登录,如果连接后密码正确却登录失败,检查/etc/ssh/sshd_config里的PermitRootLogin,改成yes并重启sshd。
xshell连接虚拟机失败?先按这份清单排查
在实际使用场景里,连接不上比一次成功的概率高得多,把以下原因按顺序排查,绝大多数问题都能解决。
网络不通:虚拟机与宿主机之间IP不在同一网段
在虚拟机里执行ping 宿主机IP,在宿主机CMD里执行ping 虚拟机IP,两边都通才说明网络正常。
用桥接模式时,虚拟机IP要和宿主机IP在同一网段,如果虚拟机用的是DHCP自动获取,重启后IP可能变化,导致Xshell里的地址失效,这种情况推荐配置静态IP,或者每次连接前先在Xshell里更新主机地址。
NAT模式下,虚拟机只能单向访问外部,但宿主机访问虚拟机没问题,如果反过来宿主机ping不通虚拟机,检查VMware的虚拟网络编辑器(编辑 -> 虚拟网络编辑器 -> 更改设置),确认NAT模式的子网掩码和网关设置正确。
SSH服务未启动或端口被占
输入ss -lntp | grep 22,如果没有任何输出,说明SSH服务没监听22端口,重新执行systemctl start sshd,然后用systemctl status sshd确认active状态。
有些环境里自定义了SSH端口,比如2222,连接时要在Xshell里把端口号改成对应的值,不要死守22。

账号认证失败:密码正确但连接被踢回
排查顺序:
- 确认用户名和密码是否对应虚拟机里的真实账号
- 检查
PermitRootLogin配置 - 检查
/etc/ssh/sshd_config的PasswordAuthentication是否被设为no,如果是,改为yes - 查看虚拟机日志
tail -f /var/log/secure,里面会写明拒绝原因
行业共识认为,八成连接失败都出在网络模式和SSH服务状态上,账号问题只占小头,优先排查前两项。
vmware虚拟机连接xshell时网络模式怎么选
vmware虚拟机连接xshell这件事,网络模式决定了你能否少踩坑,不同使用场景对应不同选择。
| 网络模式 | 虚拟机能否访问外网 | 宿主机能否访问虚拟机 | 适用场景 |
|---|---|---|---|
| 桥接模式 | 能 | 能 | 虚拟机需要和局域网其他设备互通 |
| NAT模式 | 能 | 能 | 只需要宿主机和虚拟机之间通信 |
| 仅主机模式 | 不能 | 能 | 完全隔离,不访问外网 |
桥接模式:适合需要真实局域网身份的场景
桥接模式下虚拟机像一台独立电脑,有自己的局域网IP,可以被局域网内其他设备直接访问,缺点是需要局域网有足够IP地址,且DHCP分配不稳定,在公司或学校网络里,桥接模式常因网络策略原因连不上,这时换NAT更靠谱。
NAT模式:宿主机和虚拟机之间的私密通道
NAT模式下,虚拟机通过宿主机访问外部网络,对外表现为宿主机的IP,宿主机和虚拟机之间通过VMware的虚拟网卡通信,对日常开发测试来说,NAT模式最省心,不用管路由器设置,也不用担心IP冲突。
在Xshell里连接NAT模式的虚拟机,直接填虚拟机的内网IP就能通,不需要任何额外端口转发规则。

连接成功后还有哪些要注意的常见问题
连接成功后不代表万事大吉,很多人在后续使用中遇到小麻烦,这里一并说清楚。
- IP变化导致连接断开:虚拟机重启后IP可能变了,建议配置静态IP,编辑
/etc/sysconfig/network-scripts/ifcfg-ens33(CentOS)或/etc/netplan/(Ubuntu),设置固定的IP、网关和DNS。 - Xshell会话保存位置:Xshell的会话信息保存在本地,重装系统后记得备份
DocumentsNetSarang ComputerXshellSessions目录。 - 多个虚拟机切换:可以在Xshell里建立多个会话,给每个会话起不同名字,按名称区分,避免每次重新填IP。
Q&A:虚拟机连接xshell时反复遇上的问题
虚拟机可以正常上网,但xshell连接就是超时
能上网说明虚拟机的网络出得去,但Xshell连接走的是宿主机到虚拟机的方向,先确认宿主机能ping通虚拟机,ping不通就是网络模式或IP配置问题,如果ping通了却超时,检查SSH服务是否在监听,以及防火墙是否放行了22端口。
虚拟机IP一重启就变,Xshell经常连不上怎么办
这是DHCP导致的正常现象,把网络配置改成静态IP就行,CentOS系统编辑ifcfg-ens33文件,把BOOTPROTO改为static,在文件末尾加IPADDR、NETMASK、GATEWAY,重启网络服务后IP就固定了,Ubuntu用netplan配置方式,改完执行sudo netplan apply生效。
Xshell提示“Connection refused”说明握不上SSH端口
这个错误基本说明虚拟机里没有服务在22端口监听,在虚拟机终端执行systemctl status sshd,如果没启动就启动;启动后再次连接,如果之前改过SSH端口,也要同步修改Xshell里的端口号,还有一种情况是安全软件拦截,把虚拟机防火墙先临时关闭测试,能连上再仔细配置放行规则。
