VSCode使用OpenSSH私钥连接服务器仍需输密码问题求助
VSCode SSH免密连接失败排查与解决方法
以下是逐一排查并解决问题的步骤:
检查本地私钥文件权限
Linux/macOS系统对私钥权限要求严格,权限过宽会被SSH客户端直接拒绝。执行以下命令修正:chmod 700 ~/.ssh chmod 600 ~/.ssh/你的私钥文件名Windows系统需确保私钥文件仅当前用户可访问:右键文件→属性→安全→高级→禁用继承→删除所有非当前用户的权限条目。
确认服务器端公钥配置
- 将PuttyGen生成的OpenSSH格式公钥(注意不是Putty专属的.ppk公钥)完整复制到服务器的
~/.ssh/authorized_keys文件中,每行仅保留一个公钥,无多余空格或换行。 - 修正服务器端文件权限:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
- 将PuttyGen生成的OpenSSH格式公钥(注意不是Putty专属的.ppk公钥)完整复制到服务器的
验证VSCode SSH配置正确性
打开VSCode的SSH配置文件(可通过命令面板Remote-SSH: Open SSH Configuration File打开),确保配置中指定了正确的私钥路径:Host 自定义服务器名 HostName 服务器IP/域名 User 登录用户名 IdentityFile /本地完整私钥路径Windows路径需用正斜杠或双反斜杠,例如
C:/Users/xxx/.ssh/id_rsa。直接验证SSH密钥有效性
跳过VSCode,用本地终端测试密钥登录:ssh -i /本地私钥路径 用户名@服务器IP如果此命令仍需输入密码,说明问题出在密钥本身或服务器SSH配置,与VSCode无关。
检查服务器sshd配置
登录服务器,编辑/etc/ssh/sshd_config,确保以下配置项已启用:PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys若需禁用密码登录(可选),设置
PasswordAuthentication no。修改后重启SSH服务:# 系统d服务(如CentOS、Ubuntu 16.04+) sudo systemctl restart sshd # 旧版Ubuntu/Debian sudo service ssh restart重置VSCode SSH缓存
打开VSCode命令面板(Ctrl+Shift+P),执行Remote-SSH: Kill VS Code Server on Host,选择目标服务器后重新尝试连接。若问题仍存在,更新Remote-SSH插件至最新版本并重启VSCode。
内容的提问来源于stack exchange,提问作者Artem D
相关产品推荐
相关产品推荐

