虚拟机crt连接失败怎么办?先别急着重装系统,多数情况下是IP地址没对上、SSH服务没启动或者防火墙拦住了22端口,按下面步骤排查,五分钟内大概率能解决。
为什么SecureCRT总是连接超时?先查这三大基础项
SecureCRT连接虚拟机超时,90%的原因出在网络层,所谓网络层,就是你的Windows主机和虚拟机之间压根没建立起通路,别管报错提示是”连接超时”还是”连接被拒绝”,先按顺序做三个检查。
第一项:确认虚拟机到底开着没有。 别笑,真有不少人开着VMware的欢迎页就以为虚拟机在运行了,在VMware主界面看到绿色播放按钮旁边有”已开启”字样,才算真正启动完毕,而且启动过程要等三十秒以上,因为CentOS、Ubuntu这类Linux发行版开机启动SSH服务需要时间,如果刚弹出来命令行就急着连,大概率超时。
第二项:确认IP地址有没有抄错。 打开虚拟机命令行,输入 ip addr(CentOS 7及以上)或 ifconfig(老版本和Ubuntu),看到类似 168.x.x 的地址才是真正的IP,很多朋友把VMware虚拟网络编辑器里的子网IP抄过去了,那是网段的地址,不是虚拟机的地址,这两者有本质区别:子网IP像街道门牌号范围,虚拟机IP才是具体哪一户。
第三项:确认Windows和虚拟机能不能互相ping通。 在Windows的CMD里执行 ping 虚拟机IP,能通说明底层网络没问题,如果ping不通,直接跳到下面第四模块看网络模式配置,如果ping通了但CRT还是连不上,继续往下看。
虚拟机crt连接失败怎么办?查SSH服务状态和防火墙
IP能ping通说明网络层通了,接下来问题锁定在应用层,也就是虚拟机里负责远程连接的SSH服务。
先看22端口有没有在监听
在虚拟机终端执行:
netstat -tlnp | grep 22
或者用更新一点的写法:
ss -tlnp | grep sshd
有输出说明sshd服务在跑,没输出就手动启动:
sudo systemctl start sshd sudo systemctl enable sshd
最后一行 enable 很重要,不执行的话下次开机SSH又不会自动启动,你又要来一次”连接失败”的折磨。
防火墙是头号嫌疑人
CentOS 7及以上默认的firewalld,Ubuntu默认的ufw,这两位拦起22端口来毫不手软,快速验证方法:临时关闭防火墙再连一次。
CentOS系:
sudo systemctl stop firewalld
Ubuntu系:
sudo ufw disable
如果这时候CRT连上了,恭喜你,真凶找到,但别图省事一直关着防火墙,后续要长期用就配置放行规则:
CentOS系执行:
sudo firewall-cmd --permanent --add-port=22/tcp sudo firewall-cmd --reload
Ubuntu系执行:
sudo ufw allow 22/tcp
检查SSH服务配置文件
如果上面都没问题,打开SSH配置文件看一眼:
sudo vi /etc/ssh/sshd_config
找到 Port 22 这一行,确认没有被人改过端口,有些朋友之前手动改过SSH端口,时间长了自己忘了,拿着22端口去连自然失败,还有确认 PermitRootLogin yes 是开启状态,否则用root用户登录会直接被拒掉。
SecureCRT连接不上虚拟机?检查CRT自身设置
排完虚拟机那边的问题,把目光收回到CRT这个软件上。连接协议、端口号、会话配置这三样出错也会闹脾气,报错信息还特别容易误导人。
- 协议选对了吗? 新建连接时协议那一栏选的是SSH2,不是Telnet,也不是SSH1,2010年之后SSH1基本淘汰了,市面上主流Linux发行版默认不启用SSH1协议。
- 端口号填了没? 默认是22,检查的时候别只看端口号数字对不对,还要确认前面没有多余的空格,这种隐形错误最坑人。
- 用户名和认证方式匹配吗? 如果你在虚拟机里创建用户时没设密码,只用了密钥登录,那CRT里就不能填”Password”认证方式,得换成”Public Key”,然后导入你的私钥文件,很多新手在这一步反复失败,就是没搞明白密码认证和密钥认证是两条路。
网络模式没选对?NAT和桥接的区别直接决定成败
行业共识认为,虚拟机网络模式是租赁服务器做测试和平时自学时最容易踩的坑,很多人装虚拟机时一路默认走NAT模式,然后虚拟机IP是 168.155.x 网段,Windows本机却是 168.1.x 网段,两个网段不互通,CRT自然连不上。
NAT模式:最省心的选择
NAT模式相当于虚拟机躲在Windows后面上网,Windows是老大,虚拟机是老二,虚拟机可以上网,但外部设备访问不到虚拟机,这种模式下,虚拟机IP一般是 168.x.x,Windows的VMware Network Adapter也有一个同网段的IP。只要这两个IP能ping通,CRT就能连上,跟Windows自身的局域网IP是什么无关。
桥接模式:虚拟机要抢占局域网IP
桥接模式下,虚拟机直接连入你家路由器,它跟Windows主机是”兄弟关系”,各自有独立的局域网IP,这种模式的坑在于:如果你的路由器绑定过MAC地址,或者IP池已经分配完了,虚拟机会拿不到IP,连网都上不去,更别谈SSH连接了。
切换之前先问自己一个问题:你装虚拟机是为了什么?如果只是本机练习Linux命令、搭个测试环境,NAT模式完全够用,如果是给人演示项目、要让别人浏览器直接访问你虚拟机里的服务,才需要用桥接模式。
连接成功后老掉线怎么办?调整CRT的保持活跃设置
这类问题虽然不属于”连接失败”,但连接成功之后频繁断线,体验跟失败没什么区别,搞定了前面的连接问题,顺手把断线问题也治了。
现象:CRT连接虚拟机能用,但超过几分钟不动键盘鼠标就断开,重新连接又要输入密码,烦得很。
原因:Linux服务器的sshd配置里有个空闲超时参数,默认300秒没有活动就断开连接,而CRT这边也有一层超时保护,两边叠加起来,断线速度”快得飞起”。
解法分两步:
第一步,改虚拟机sshd配置,把空闲超时时间拉长或者干脆关闭:
sudo vi /etc/ssh/sshd_config
找到 ClientAliveInterval
和 ClientAliveCountMax 这两行,如果被注释掉了就去掉注释,改成:
ClientAliveInterval 60
ClientAliveCountMax 3
意思是每60秒发一个心跳包给CRT,连续3次没回应才判定超时断开,改完重启sshd服务:
sudo systemctl restart sshd
第二步,改CRT的心跳设置,让客户端主动维持连接,菜单栏选”选项”-“会话选项”-“连接”-“SSH2″,右侧找到”服务器活动检测”,勾选发送keep alive消息,间隔填60秒。
这两处改完,挂一晚上都不掉线,顺带说一句,如果上面所有方案都试遍了还不行的,排除一下Windows自带防火墙对SecureCRT软件本身的外发限制,可以把SecureCRT在Windows防火墙里设为”允许应用通过防火墙”,操作路径是:控制面板-系统和安全-Windows Defender防火墙-允许应用或功能通过防火墙-更改设置-允许其他应用-找到SecureCRT安装路径添加进来。
常见问题速查
SecureCRT连上了但黑屏没提示符,怎么办?
这种多半是虚拟机还没完全启动好,重启虚拟机,看到login或者命令行界面后等十秒再连,少数情况是SSH会话类型选错了,CRT新建连接时”协议”旁边有个”会话类型”,选成”SSH2″关联的Shell即可,别选成”GSM”这种奇葩类型。
虚拟机的IP地址总变,今天连上了明天又连不上?
因为虚拟机默认用DHCP动态获取IP,下次开机IP可能变了,解决方法是设置静态IP,在CentOS里编辑网络脚本文件:
“`bash
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
“`
把 `BOOTPROTO=dhcp` 改成 `BOOTPROTO=static`,然后追加IPADDR(你想要的固定IP)、NETMASK(255.255.255.0)、GATEWAY(网关地址,NAT模式就在VMware虚拟网络编辑器里看),最后重启网络服务,据实际反馈,设置静态IP后连接稳定性会有本质提升。
虚拟机crt连接失败这件事,本质上是网络、服务、认证三个环节里某一个出了岔子,网络看IP和ping,服务看sshd和防火墙,认证看用户名和协议,一层层查下去基本没有解决不了的。记住一个总原则:先ping后连,先防火墙后配置,先SSH协议后CRT选项,按这个顺序排查比乱试高效得多。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/746401.html





