虚拟机无法连接CRT,绝大多数情况下是网络模式、SSH服务或防火墙三者中的一个环节出了问题,按本文流程依次排查,5分钟内即可解决。
虚拟机无法连接CRT?先分清报错类型
SecureCRT连接虚拟机,本质是Windows主机通过SSH协议访问Linux虚拟机的22端口,报错信息不同,排查方向也不同,先把错误截图或提示文字看清楚,再动手改配置,能省下大量无效操作。
虚拟机连接CRT报错怎么办?常见两种错误形态
第一种:连接超时(Connection timed out)
表现为屏幕长时间停在“Connecting”状态,最后提示超时,这通常说明数据包没到达虚拟机,或者到达后没有回应,常见原因包括:虚拟机网卡没启用、IP地址配置错误、SSH服务未启动、防火墙丢弃了包。
第二种:连接被拒绝(Connection refused)
提示速度很快,说明网络是通的,但22端口没有服务在监听,常见原因是openssh-server未安装或未启动,也可能SSH端口被改成了非22。
第三种:主机密钥变更提示(Host key verification failed)
多数发生在重装系统或重置虚拟机后,SecureCRT记住了旧的主机密钥,而虚拟机换了新的,客户端会直接拒绝连接,这类报错需要删除旧的密钥记录。
先确认是哪种报错,再对号入座排查,下面按出现频率从高到低,逐个解决。
虚拟机连接CRT不通,多半卡在这三个环节
行业共识认为,绝大多数SecureCRT连接虚拟机失败案例,都集中在网络配置、SSH服务、防火墙这三个环节,逐项检查,基本能覆盖九成问题。
网络模式与IP地址配置检查
虚拟机网卡通常有三种模式:NAT、桥接、仅主机,很多教程默认使用NAT模式,但如果虚拟机IP地址配置和NAT子网对不上,CRT自然连不上。
第一步,确认虚拟机内IP地址,在虚拟机终端执行:
ip addr
或
ifconfig
找到类似 168.x.x 的地址,如果只有 0.0.1,说明网卡没有配置IP。
第二步,确认Windows主机能ping通这个IP,在Windows命令行执行:
ping 虚拟机IP -t
如果ping不通,检查虚拟机网卡是否已连接,在VMware中,右键虚拟机→设置→网络适配器,勾选“已连接”,并确认网络连接模式,VirtualBox需要在“设置→网络”中启用“接入网线”。
如果ping通但CRT连不上,跳过网络环节,看SSH服务。
SSH服务状态与端口检查
虚拟机内执行:
systemctl status sshd
或
systemctl status ssh
如果显示inactive (dead),启动服务:
systemctl start sshd systemctl enable sshd
CentOS和Ubuntu的服务名不完全一致,Ubuntu多数是ssh,CentOS/RHEL多数是sshd,不确定时用ps -ef | grep ssh查看进程是否存在。
再检查端口监听:
netstat -tlnp | grep 22
如果没有22端口监听,说明SSH没起来,或者配置文件指定了其他端口,查看/etc/ssh/sshd_config中的Port字段,默认是22,如果改过端口,CRT连接时要把端口改成对应值。
防火墙与安全组拦截
虚拟机上常见防火墙是firewalld或ufw,检查状态并临时放行:
systemctl stop firewalld
Ubuntu执行:
ufw disable
如果是云服务器虚拟机,还要检查安全组入方向规则是否放行22端口,安全组通常位于云控制台“实例→安全组”中,添加一条允许TCP 22端口、来源为0.0.0/0的规则即可。
很多用户在这步卡住:虚拟机本地一切正常,CRT却连不上,关闭防火墙后立竿见影。确认能连上后,再按需配置防火墙规则,而不是一直关闭它,
firewall-cmd --permanent --add-service=ssh firewall-cmd --reload
手把手排查:虚拟机连接CRT连接超时的完整流程
如果你遇到的是连接超时,按以下顺序操作,每一步都有明确验证方法。
-
确认虚拟机开机且网卡已连接
在虚拟机软件里查看运行状态,不要用挂起或快照恢复的旧状态,恢复快照后IP可能发生变化。 -
获取当前IP并测试主机连通性
在虚拟机中执行ip addr,记录IP,然后在Windows命令行执行ping IP,ping不通,进入第3步;ping通但CRT超时,跳到第5步。 -
检查Windows与虚拟机是否在同一子网
NAT模式下,Windows的VMnet8网卡IP通常为168.x.1,虚拟机IP必须与它同一网段,在Windows执行ipconfig,查看VMnet8的IPv4地址,如果虚拟机是168.10.100,而VMnet8是168.20.1,不在同一网段,需要在虚拟机中手动配置静态IP。手动配置示例(CentOS/RHEL,使用nmcli):
nmcli connection modify ens33 ipv4.addresses 192.168.10.100/24 nmcli connection modify ens33 ipv4.gateway 192.168.10.1 nmcli connection modify ens33 ipv4.method manual nmcli connection up ens33
网卡名以
ip addr输出为准。 -
检查虚拟网络编辑器
VMware菜单栏“编辑→虚拟网络编辑器”,查看NAT模式的子网IP和掩码,确保与虚拟机IP匹配,如果DHCP分配异常,直接改为静态IP最稳妥。 -
测试本机SSH服务
在虚拟机内执行:ssh localhost
如果能登录,说明SSH服务正常,不能登录则先修复服务。
-
检查监听地址是否限制为本地回环
查看/etc/ssh/sshd_config中的ListenAddress字段,如果设置为0.0.1,则外部连接无法进入,将其注释或改为0.0.0,然后重启sshd:systemctl restart sshd
-
关闭虚拟机和Windows防火墙做交叉测试
Windows防火墙也可能拦截SecureCRT的入站连接,临时关闭Windows防火墙,再尝试连接,能连上后,在防火墙高级设置中放行TCP 22端口出站规则。 -
抓包确认数据包是否抵达
如果以上步骤全无效,在虚拟机内使用tcpdump -i eth0 port 22监听,Windows再发起连接,如果tcpdump没有任何输出,说明数据包没到虚拟机,问题在虚拟网络或物理网络,如果有SYN包但没有后续响应,则是虚拟机内部防火墙或sshd处理问题。
这套流程基本能覆盖全部超时场景,多数情况下,问题都出在第3步的IP网段不一致,或者第7步的Windows防火墙拦截。
避免下次再断连:SecureCRT会话配置要点
连接成功后,建议做两件事:设置固定IP,保存正确的会话配置,否则虚拟机重启后IP一换,CRT又会提示连接失败。
给虚拟机配置静态IP
编辑/etc/sysconfig/network-scripts/ifcfg-ens33(CentOS)或/etc/netplan/.yaml(Ubuntu),配置固定IP,这样即使虚拟机重启,地址也不会漂移。
SecureCRT会话关键参数
- 协议:SSH2
- 主机名:虚拟机静态IP
- 端口:22(除非改过)
- 用户名:虚拟机登录用户
- 认证方式:Password或PublicKey
保存会话后,下次连接直接双击会话,不用重复输入IP。
主机密钥冲突的解决
如果出现Host key verification failed或The fingerprint has changed提示,需要删除本机缓存的旧密钥,在Windows上,SecureCRT的已知主机密钥存储在%APPDATA%\VanDyke\Config\KnownHosts\目录,删除对应IP的文件,或者直接删除整个KnownHosts目录,重新连接即可,业内专家指出,重装系统后出现的密钥报错,多半是旧密钥残留所致,删除缓存是最直接的解法。
关于虚拟机连接CRT的常见问答
SecureCRT连接虚拟机失败,但ping虚拟机IP能通,是什么原因?
ping通意味着网络链路正常,失败集中在SSH服务或防火墙,先在虚拟机内执行systemctl status sshd查看服务状态,再确认端口监听,如果服务正常,执行systemctl stop firewalld或ufw disable后重试,另一种常见情况是SSH配置文件只监听了IPv6地址,检查ListenAddress是否包含0.0.0。
虚拟机连接CRT报错“Connection refused”怎么解决?
报错说明目标主机的22端口没有服务应答,重点检查openssh-server是否安装:
- CentOS:
yum install -y openssh-server - Ubuntu:
apt install -y openssh-server
安装后启动并设置开机自启,如果服务已启动且端口在监听,检查ssh服务的AllowUsers或DenyUsers配置,确认当前用户该被允许。
虚拟机无法连接CRT,换成其他工具能不能解决?
不能,SecureCRT和Xshell、MobaXterm使用的都是SSH协议,底层连接机制完全一致,虚拟机无法连接CRT,换工具通常同样连不上,只有一种例外:SecureCRT会话配置错误,例如端口写错或协议选错,此时换工具重新配置可能绕过这个错误,但排查的重点始终在网络、服务和防火墙上,而不是工具本身。