VSCode远程连接失败90%以上因防火墙未通端口:需同时放行云安全组与系统防火墙的SSH端口(如2222),并确认sshd服务正在监听该端口;VSCode连接时必须显式指定端口或使用SSH配置别名。

VSCode 远程连接失败,90% 以上和防火墙有关——不是 VSCode 或插件的问题,而是端口根本没通。核心就两点:服务器上的 SSH 端口(如 22 或自定义的 2222)必须被系统防火墙和云平台安全组同时放行;且服务本身得在监听这个端口。
确认 SSH 服务正在监听目标端口
连不上之前,先别急着改防火墙。登录服务器,用命令验证 SSH 是否真在跑、是否在听你要连的那个端口:
- 检查
sshd状态:sudo systemctl status sshd,输出里要有active (running) - 查监听端口:
sudo ss -tuln | grep ':22'(把22换成你实际用的端口号,比如2222)——必须看到LISTEN,否则防火墙开了也没用 - 如果没输出,说明
sshd没启动,或配置文件/etc/ssh/sshd_config里Port被注释/写错,或服务被systemctl mask了
本地系统防火墙(ufw / iptables)放行 SSH 端口
Ubuntu/Debian 默认用 ufw,CentOS/RHEL 多用 firewalld 或 iptables。开一个端口,不是“允许 SSH”,而是“允许 TCP 流量进指定端口”:
-
sudo ufw allow 2222/tcp(替换为你自己的端口号) - 如果是
firewalld:sudo firewall-cmd --permanent --add-port=2222/tcp && sudo firewall-cmd --reload - 别信“
ufw allow OpenSSH”这种模糊规则——它只开默认22,自定义端口必须显式写数字 - 临时关防火墙测试?可以:
sudo ufw disable,但生产环境务必关掉后立刻重开并加好规则
云服务器安全组(阿里云/AWS/腾讯云)必须同步放开
本地防火墙开了,不代表你能连上——云厂商的安全组是第一道网关,它比系统防火墙更优先拦截流量:
- 进控制台 → 找到对应 ECS 实例 → 进入“安全组”页签 → 编辑“入方向规则”
- 添加一条规则:
协议类型选 TCP,端口范围填2222/2222(不是2222单写),授权对象填你的 IP(如123.45.67.89/32)或最小必要网段(如公司出口 IP 段) - 别填
0.0.0.0/0开放全网——这是最常被扫出漏洞的配置 - 改完规则要等 1–2 秒生效,不用重启服务器
VSCode 连接时必须显式指定非默认端口
很多人配了 Port 2222 在 ~/.ssh/config 里,但 VSCode 连接时只输 user@host,结果还是连 22 ——VSCode 不会自动读取 SSH 配置里的端口,除非你明确告诉它:
- 在
~/.ssh/config中写清楚:Host my-server HostName 192.168.1.100 User ftpadmin Port 2222 - VSCode 里用 “Connect to Host” 时,输入的是
my-server(主机别名),不是 IP;如果直接输ftpadmin@192.168.1.100:2222,冒号后端口才生效 - 检查 VSCode 底部状态栏左下角的远程按钮,悬停时显示的连接字符串是否含
:2222;没有就是没对上
最容易被忽略的一点:云安全组和系统防火墙是两套独立系统,缺一不可;而 VSCode 的连接字符串是否带端口,决定了它连的是哪一层。三者不一致,就会出现“明明开了防火墙却连不上”的假象。


















