Azure Windows虚拟机VS Code Remote-SSH连接超时问题求助
Azure Windows虚拟机VS Code Remote-SSH连接超时问题求助
遇到这种SSH连接超时的情况确实挺头疼的,结合你描述的背景(已经能通过Bastion隧道RDP访问VM,装了OpenSSH但SSH连15秒超时),我整理了几个实用的排查方向和解决办法,你可以一步步试试:
先确认OpenSSH服务是否正常运行
远程RDP进VM后,按Win+R输入services.msc打开服务管理器,找到「OpenSSH SSH Server」服务:- 检查状态是不是「正在运行」,如果没启动就右键启动;
- 把启动类型改成「自动」,避免VM重启后服务自动关闭。
双防火墙排查:Windows本地+Azure网络安全组
这是最常见的端口不通原因:- Windows Defender防火墙:打开「高级设置」,确认存在允许「OpenSSH SSH Server (sshd)」的入站规则;如果没有,手动新建一条规则,允许TCP 22端口入站(测试阶段可以先设为允许所有IP,后续再按需限制)。
- Azure网络安全组(NSG):登录Azure门户找到VM对应的NSG,检查入站规则里有没有优先级较高的「允许TCP 22端口」规则。如果没有,添加入站规则:源可选你的本地公网IP(更安全)或「任何」,目标端口填22,协议选TCP,动作设为「允许」。
检查Bastion隧道的端口配置
你用Bastion连RDP正常,但SSH可能没配置对应隧道:
用Azure CLI重新创建包含22端口的隧道,命令类似:az network bastion tunnel --name <你的Bastion名称> --resource-group <资源组名称> --target-resource-id <VM的资源ID> --resource-port 22 --port 2222然后VS Code的SSH配置要指向本地的2222端口,而不是直接连VM的公网IP。
验证OpenSSH配置文件参数
打开VM上的C:\ProgramData\ssh\sshd_config(需要管理员权限),检查几个关键参数:Port 22:确认端口没被修改成其他值;ListenAddress 0.0.0.0:允许所有IP访问,避免限制了隧道的IP;- 如果用密码登录,确保
PasswordAuthentication yes;用密钥登录的话,确认PubkeyAuthentication yes,且你的公钥已经放到VM的C:\Users\<你的用户名>\.ssh\authorized_keys文件里。
修改后记得重启OpenSSH服务生效。
测试端口连通性
在本地CMD里用telnet localhost 2222(如果用Bastion隧道)或telnet <VM公网IP> 22测试端口是否能连通:- 连不通:回到防火墙/NSG/隧道配置排查;
- 能连通:检查VS Code的SSH配置是否正确,或者尝试重启VS Code再连接。
备注:内容来源于stack exchange,提问作者DiegoV
相关产品推荐
相关产品推荐

