虚拟机连接CRT失败的根本原因集中在SSH服务异常、网络连通性故障以及CRT会话配置错误三个层面,多数情况下并不涉及复杂的深层问题,按顺序排查即可定位并解决。如果你正在使用VMware或VirtualBox运行Linux虚拟机,而SecureCRT始终无法建立连接,请先确认这几项基础配置,再依次向下排查。
虚拟机连接CRT失败怎么办:先检查服务端状态
当VirtualBox或VMware环境中的虚拟机连接CRT失败时,首先要确认虚拟机本身的SSH服务是否已启动。多数教程默认系统自带OpenSSH,但部分精简版Linux镜像或最小化安装并不会自动开启该服务。
SSH服务的启动与验证
在虚拟机终端中执行以下命令,确认sshd的运行状态:
systemctl status sshd
如果看到active (running),说明服务正常,若显示inactive或dead,依次执行:
systemctl start sshd systemctl enable sshd
- 在CentOS 7及以上版本,服务名为
sshd。 - 在Ubuntu 20.04及以上版本,服务名为
ssh,命令应为systemctl status ssh。 - 若执行状态查询时报错
Unit not found,需要先安装OpenSSH服务端:yum install -y openssh-server(CentOS)或apt install -y openssh-server(Ubuntu)。
监听端口与地址绑定
SSH默认监听22端口,但有些安全加固过的系统会修改默认端口或限制监听地址,执行以下命令核实:
netstat -tlnp | grep ssh
确保Local Address为0.0.0:22或::22,如果显示0.0.1:22,说明sshd只监听本地回环地址,外部连接必然失败,需修改/etc/ssh/sshd_config中的ListenAddress为0.0.0,然后重启服务,行业共识认为,这种配置问题在实际排障中占比较高,尤其常见于从模板克隆出的虚拟机镜像。
SecureCRT连接不上虚拟机?网络模式与IP地址是关键
服务端正常后,接下来排查网络层,虚拟机连接CRT失败怎么办的第二大常见原因,就是虚拟机的网络模式和IP地址配置不合逻辑。
VMware三种网络模式的实际适用场景
VMware Workstation提供三种网络模式,每种模式对应不同的通信范围:
- 桥接模式(Bridged):虚拟机与宿主机处于同一局域网,拥有独立IP,宿主机能直接访问虚拟机,虚拟机也能访问局域网内其他机器。
- NAT模式:虚拟机通过宿主机共享IP访问外网,宿主机与虚拟机之间通过虚拟网卡通信,默认情况下,宿主机可以主动连接虚拟机,但外部设备无法直接访问。
- 仅主机模式(Host-Only):虚拟机只能与宿主机通信,无法访问外网,适用于隔离环境。
使用NAT模式时,一个极易被忽视的坑是VMware的虚拟网络编辑器设置。 点击VMware菜单栏“编辑”→“虚拟网络编辑器”,选中VMnet8(NAT模式的默认虚拟网络),查看底部的“NAT设置”,如果这里配置了端口转发,且宿主机22端口被其他程序占用,SSH连接请求就会发往错误的端口,导致CRT一直提示“Connection refused”。
| 网络模式 | 宿主机访问虚拟机 | 虚拟机访问外网 | 需手动配置IP |
|---|---|---|---|
| 桥接 | 支持 | 支持 | 是 |
| NAT | 支持 | 支持 | 是 |
| 仅主机 | 仅VMnet1内 | 不支持 | 是 |
IP地址冲突与网段隔离
无论使用哪种模式,确认虚拟机IP与宿主机IP处于同一网段是基本前提。
- 宿主机IP为
168.1.10/24,桥接模式下的虚拟机IP必须是168.1.x,不能是0.0.x或16.x.x。 - NAT模式下,虚拟机IP通常为
168.x.x,但特定VMware Workstation版本的默认网段为192.168.136.0/24,具体以“虚拟网络编辑器”中显示的为准。
在虚拟机里执行ip addr查看当前IP,如果发现IP为169.254.x.x,说明DHCP获取失败,此时需要手动指定静态IP:
vi /etc/sysconfig/network-scripts/ifcfg-ens33 # CentOS/RHEL
如下(以NAT模式为例):
BOOTPROTO=static
IPADDR=192.168.136.50
NETMASK=255.255.255.0
GATEWAY=192.168.136.2
DNS1=8.8.8.8
Ubuntu 18.04+的系统则编辑/etc/netplan/01-netcfg.yaml,修改完成后,执行systemctl restart network(CentOS)或netplan apply(Ubuntu)重启网络。
宿主机端与CRT客户端的排查项
很多人会忽略一个事实:SecureCRT安装在宿主机上,宿主机的防火墙和CRT本身的会话设置也会导致连接失败。
宿主机防火墙拦截
Windows防火墙默认可能阻止来自VMware虚拟网卡的入站连接,排查方式很简单:
- 临时关闭Windows防火墙测试连接(仅排查用,不推荐长期关闭)。
- 或者进入“控制面板”→“Windows Defender防火墙”→“允许应用或功能通过Windows Defender防火墙”,找到SecureCRT,勾选“专用”和“公用”两个复选框。
对于Linux宿主机直接运行CRT的情况,执行:
firewall-cmd --list-all
若22端口不在ports列表中,则需放行:
firewall-cmd --permanent --add-port=22/tcp firewall-cmd --reload
虚拟机防火墙的常见拦截
Linux虚拟机如果启用了firewalld或ufw,默认不会放行SSH端口,以firewalld为例:
firewall-cmd --permanent --add-service=ssh firewall-cmd --reload
排除完防火墙,再确认虚拟机的SSH服务是否绑定了错误的网卡,如虚拟机有多块网卡(一块NAT、一块仅主机),SSH可能监听到非活跃网卡上,此时需要指定监听具体网卡IP。
SecureCRT会话配置细节
CRT会话设置中,一个低调但致命的错误是“防火墙”下拉菜单选错选项。 新建会话时,协议选择SSH2,端口填写真实端口(默认22),但很多老版本的CRT在“会话选项”→“连接”→“防火墙”处默认选择了None以外的其他配置,正确设置为None或无即可。
主机名处不要带任何协议前缀(如ssh://),直接填写IP地址或域名,有些用户在主机名后拼接了冒号端口(如168.1.10:22),这会导致DNS解析错误,让SecureCRT连接不上虚拟机。
网络连通性测试:区分故障层级的标准方法
当你无法确认问题出在哪一层时,按以下顺序做连通性测试,可以快速判定虚拟机端口不通或CRT无法解析主机名的具体原因。
第一步:宿主机到虚拟机的ICMP测试
在宿主机命令行执行:
ping 虚拟机IP
- 若通则说明二层网络通畅。
- 若不通,直接跳转到前面的虚拟网络编辑器配置检查。
第二步:宿主机到虚拟机的端口测试
使用Telnet测试SSH端口是否可达:
telnet 虚拟机IP 22
- 出现
Connected to字样,说明端口通,问题出在CRT会话配置。 - 出现
Connection refused,说明SSH服务未启动或防火墙拦截。 - 提示超时,说明网络层的转发规则有误。
第三步:虚拟机自身的路由检查
在虚拟机中执行:
ip route show
如果默认路由缺失,虚拟机能上外网但宿主机找不到回包路径,同样会导致CRT连接超时,此时补充默认网关:
ip route add default via 虚拟网关IP
虚拟机连接CRT失败怎么办:冷门但高发的诱因
网络与端口排查完毕仍未解决时,以下几个场景值得特别留意。
VMware挂起了快照导致的网络异常
恢复快照后,虚拟机的网络服务可能因网卡MAC地址变动或iptables规则残留而失效,如果连接CRT失败且上述操作均无效,尝试重启虚拟机的网络服务:
systemctl restart network
或直接重启虚拟机,行业共识认为,虚拟化环境中的网卡热插拔配置差异会造成CRT连接不稳定,尤其在克隆虚拟机时未重新生成MAC地址的情况下。
VirtualBox的NAT模式未做端口转发
VirtualBox的NAT模式默认与VMware不同外部主机无法主动连接虚拟机,在VirtualBox中,必须显式配置端口转发规则:
- 选中虚拟机 → “设置” → “网络” → “高级” → “端口转发”。
- 添加规则:协议
TCP,主机端口2222,子系统端口22。 - 随后CRT连接时,主机名填
0.0.1,端口填2222。
最新版本的VirtualBox也提供了“桥接模式”替代方案,但Windows宿主机在无线网络下桥接模式经常出现ARP不通的问题,此时NAT+端口转发更稳定。
CRT版本兼容性
SecureCRT 7.0以下的旧版本对OpenSSH 8.0以上的新密钥算法(如ssh-ed25519)支持不佳,会在密钥交换阶段直接断开连接,如果CRT提示“Key exchange failed”或“No compatible cipher”,优先升级CRT至8.x版本,或在虚拟机SSH服务端配置中启用兼容算法。
Q&A:SecureCRT连接不上虚拟机常见问题集中解答
Q1:VMware虚拟机连接CRT失败最常见的原因是什么?
A1:SSH服务未安装或未启动,其次为虚拟机的网络模式配置了但IP地址与宿主机不在同一可通信链路,以及防火墙拦截22端口。
Q2:VirtualBox虚拟机ssh连接不上,是否需要额外设置端口转发?
A2:NAT模式下必须设置端口转发规则,否则宿主机无法访问虚拟机SSH服务,桥接模式下则不需要做端口转发,但要保证虚拟机IP与宿主机IP能相互Ping通,并且公网出口不被路由策略阻断。
Q3:CRT报错“The server has disconnected with an error”怎么处理?
A3:优先查看服务端日志/var/log/secure(CentOS)或/var/log/auth.log(Ubuntu),一般在文件末尾能看到具体的断开原因,常见为密码认证失败次数过多导致IP被临时封禁,或ssh的MaxStartups参数与并发连接限制冲突,调整这些参数并重启sshd后重试即可。
修好这台虚拟机、重新打开SecureCRT,输入用户名和密码,回车看到命令行提示符的那一瞬间,说明端口、地址、防火墙、会话四层链路已经完全打通,下次遇到同类问题,按本文排查顺序从服务端到客户端逐项验证,先确认SSH活着,再看网络通不通,最后检查CRT自己有没有走错门路, 90%以上的连接失败都能在十分钟内解决。