VS Code SSH断开问题

除了保活设置之外,如果 VS Code
一连上就马上断掉,然后又要重新输入密码,通常是因为用的是「密码认证」+没有做连接复用,或是服务器端对交互式密码登录支持不够友好。

推荐从两方面入手:


1. 改用 SSH 密钥对,彻底免密码

这样既安全又不会每次都被弹密码框,也能提高连接稳定性。

  1. 本机生成密钥(如果已有就跳过)
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
  1. 把公钥拷到服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub user@your.server.ip
  1. 确认服务器端 ~/.ssh/authorized_keys~/.ssh 目录权限
ssh user@your.server.ip
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
  1. 检查服务器端 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
  1. 测试免密码登录

    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 侧打开一个完整的终端窗口来交互,就算还要输密码,也能正常看到提示,不会一下就断掉。

操作流程小结

  1. 改用 SSH 密钥对,保证「免密码登录」。

  2. ~/.ssh/config 中配置保活 + 多路复用。

  3. 调整 VS Code Remote-SSH 设置:

    • 关闭本地服务器代理
    • 打开登录终端
  4. 重启 VS Code,重新打开 Remote-SSH 连接,应该就能一次连上长期开了,不会再刚连就断。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值