除了保活设置之外,如果 VS Code
一连上就马上断掉,然后又要重新输入密码,通常是因为用的是「密码认证」+没有做连接复用,或是服务器端对交互式密码登录支持不够友好。
推荐从两方面入手:
1. 改用 SSH 密钥对,彻底免密码
这样既安全又不会每次都被弹密码框,也能提高连接稳定性。
- 本机生成密钥(如果已有就跳过)
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
- 把公钥拷到服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub user@your.server.ip
- 确认服务器端
~/.ssh/authorized_keys和~/.ssh目录权限
ssh user@your.server.ip
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
- 检查服务器端 SSH 配置
在服务器上编辑 /etc/ssh/sshd_config,确保下面几行存在且没有被注释(没有前导的 #):
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
4. 如果你是 root 登录,还要:
PermitRootLogin yes # 或 Without-Password
改完之后重启 SSH 服务:
# Ubuntu/Debian
sudo systemctl restart ssh
# CentOS/RHEL
sudo systemctl restart sshd
-
测试免密码登录
ssh user@your.server.ip
这一步如果能直接登上去,就说明设置成功,VS Code 在选用此密钥后也不会再要密码。
2. 在 ~/.ssh/config 里开启连接复用和保活
配合密钥登录后,再加上复用和保活,VS Code 的 Remote-SSH 连接更稳:
Host your-server-alias
HostName your.server.ip
User user
IdentityFile ~/.ssh/id_rsa # 指向上面生成的私钥
TCPKeepAlive yes
ServerAliveInterval 60 # 每 60s 发送心跳
ServerAliveCountMax 3 # 心跳 3 次无响应才断
ControlMaster auto # 开启多路复用
ControlPath ~/.ssh/cm-%r@%h:%p
ControlPersist 10m # 主连接在最后一个子连接退出后仍保持 10 分钟
- ControlMaster/ControlPath/ControlPersist:让后续重开终端或者 VS Code 重连,都走同一条通道,极大减少握手次数和掉线概率。
- ServerAliveInterval/CountMax:保证即使网络中有中间路由或防火墙,也不断线。
配置完后,在 VS Code 的 settings.json 中确认没有覆盖这些设置:
{
"remote.SSH.useLocalServer": false,
"remote.SSH.showLoginTerminal": true
}
useLocalServer: false让 VS Code 不走它的本地代理,有时更稳。showLoginTerminal: true可以在 VS Code 侧打开一个完整的终端窗口来交互,就算还要输密码,也能正常看到提示,不会一下就断掉。
操作流程小结
-
改用 SSH 密钥对,保证「免密码登录」。
-
在
~/.ssh/config中配置保活 + 多路复用。 -
调整 VS Code Remote-SSH 设置:
- 关闭本地服务器代理
- 打开登录终端
-
重启 VS Code,重新打开 Remote-SSH 连接,应该就能一次连上长期开了,不会再刚连就断。
8908

被折叠的 条评论
为什么被折叠?



