VS Code远程SSH连接失败:反复要求密码且权限被拒
解决VS Code Remote SSH反复要求输入密码且权限拒绝的问题
问题根源
你的SSH配置中,ProxyJump proxy_host未指定代理主机的登录用户,导致SSH默认使用Windows系统的域用户名(domain\username)尝试连接代理主机,但代理主机的合法用户并非这个带域的账号,进而触发密钥认证失效,即使输入正确密码也会因用户不匹配被拒绝。
修复步骤
1. 完善SSH配置,明确代理主机的用户
修改C:\Users\username\.ssh\config文件,给代理主机指定正确的登录用户,两种方式任选其一:
- 直接在ProxyJump中指定用户:
Host primary_host HostName primary_hostname User username ProxyJump username@proxy_host
- 单独配置代理主机条目(便于后续复用):
Host proxy_host HostName proxy_hostname User username Host primary_host HostName primary_hostname User username ProxyJump proxy_host
2. 确认密钥在代理主机的授权列表中
- 检查本地私钥(默认是
id_rsa或id_ed25519)对应的公钥,是否已添加到代理主机的~/.ssh/authorized_keys文件里。 - 若代理主机需要单独的密钥,可在配置中用
IdentityFile指定:
Host proxy_host HostName proxy_hostname User username IdentityFile C:\Users\username\.ssh\id_rsa_proxy Host primary_host HostName primary_hostname User username ProxyJump proxy_host IdentityFile C:\Users\username\.ssh\id_rsa_primary
3. 清除VS Code的SSH缓存
VS Code可能留存了旧的连接信息,按以下步骤清理:
- 关闭所有VS Code窗口
- 删除
%USERPROFILE%\AppData\Roaming\Code\User\globalStorage\ms-vscode-remote.remote-ssh目录下的缓存文件 - 重启VS Code后重新尝试连接
4. 用命令行验证SSH连接
先在Windows命令行(cmd/PowerShell)测试代理主机的密钥登录是否正常:
ssh username@proxy_host
确认能正常登录后,再测试通过代理连接目标主机:
ssh -J username@proxy_host username@primary_hostname
如果命令行连接正常,VS Code的Remote SSH就能正常工作。
内容的提问来源于stack exchange,提问作者Jake Steele
相关产品推荐
相关产品推荐

