SSH连接前必须确认三件事:本地装有OpenSSH客户端且终端能ssh user@host成功登录、服务器sshd服务运行并放行22端口(或自定义端口)、VSCode已安装Remote-SSH扩展。

SSH 连接前必须确认的三件事
VSCode 本身不内置 SSH 远程功能,依赖官方扩展 Remote - SSH,且你的本地机器(运行 VSCode 的电脑)必须能通过终端 ssh user@host 成功登录目标服务器——这是硬性前提。如果终端都连不上,VSCode 肯定连不上。
常见卡点:
- 本地没装 OpenSSH 客户端(Windows 用户需确认已启用“OpenSSH 客户端”可选功能,或安装 Git for Windows 并勾选 SSH)
- 服务器防火墙(如
ufw或firewalld)未放行 22 端口 -
sshd服务未运行(sudo systemctl status sshd查看)
配置 ~/.ssh/config 比直接输地址更可靠
VSCode 的 Remote - SSH 扩展默认读取系统 SSH 配置文件 ~/.ssh/config。比起每次手动输入 user@host:port,用 Host 别名 + 显式参数能避免权限、端口、密钥路径等歧义。
例如,在 ~/.ssh/config 中写入:
Host myserver
HostName 192.168.1.100
User john
Port 2222
IdentityFile ~/.ssh/id_rsa_server
ForwardAgent yes
之后在 VSCode 命令面板(Ctrl+Shift+P)里执行 Remote-SSH: Connect to Host...,就能直接选 myserver,不用再拼地址和端口。
注意:IdentityFile 必须是绝对路径;若私钥有密码,VSCode 会弹窗提示输入,但首次连接后通常会缓存到系统钥匙串(macOS)或 ssh-agent(Linux/macOS);Windows 用户建议用 pageant 或启用 OpenSSH Authentication Agent 服务。
第一次连接失败?先看 VSCode 底部状态栏和日志
连接卡在 “Setting up remote connection…” 或报错 Could not establish connection to…,别急着重装插件。先看 VSCode 窗口右下角状态栏:它会显示当前连接阶段(如 “Installing VS Code Server”),并给出错误图标。
点击该图标,选择 Open Log,重点扫这几行:
-
ssh: connect to host ... port ...: Connection refused→ 服务器没开 sshd,或 IP/端口错 -
Permission denied (publickey)→ 密钥没配对成功,检查~/.ssh/authorized_keys是否包含公钥内容,且权限为600 -
Failed to fetch remote environment→ 服务器上$SHELL不是 bash/zsh,或~/.bashrc里有阻塞输出的命令(如echo或clear)
VSCode 在远程服务器上会自动部署一个轻量版服务端(vscode-server),位置在 ~/.vscode-server。如果手动删过这个目录,下次连接会重新拉取——确保服务器能访问 update.code.visualstudio.com(国内用户可能需要配代理或改源)。
连接成功后,scp 和 rsync 仍走原生 SSH 配置
VSCode 远程窗口里打开的终端,环境变量和 SSH 配置继承自远程服务器,但你在本地终端用 scp 或 rsync 同步文件时,依然走的是你本机的 ~/.ssh/config 和密钥。别误以为“连上了 VSCode 就等于本地所有 SSH 工具都自动适配了”。
比如你用 rsync -av ./src/ myserver:/home/john/app/,它依赖的仍是 myserver 这个别名定义的 HostName、Port、IdentityFile。如果忘了配 IdentityFile,就会提示 Permission denied,哪怕 VSCode 自己连得进去。
另一个易忽略点:VSCode 远程编辑时,文件保存是直接写入远程磁盘的,不会同步回本地。想备份或比对,得额外跑 rsync 或用 Git 提交——别指望编辑器自动帮你双向同步。


















