You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSCode使用OpenSSH私钥连接服务器仍需输密码问题求助

VSCode SSH免密连接失败排查与解决方法

以下是逐一排查并解决问题的步骤:

  • 检查本地私钥文件权限
    Linux/macOS系统对私钥权限要求严格,权限过宽会被SSH客户端直接拒绝。执行以下命令修正:

    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/你的私钥文件名
    

    Windows系统需确保私钥文件仅当前用户可访问:右键文件→属性→安全→高级→禁用继承→删除所有非当前用户的权限条目。

  • 确认服务器端公钥配置

    1. 将PuttyGen生成的OpenSSH格式公钥(注意不是Putty专属的.ppk公钥)完整复制到服务器的~/.ssh/authorized_keys文件中,每行仅保留一个公钥,无多余空格或换行。
    2. 修正服务器端文件权限:
      chmod 700 ~/.ssh
      chmod 600 ~/.ssh/authorized_keys
      
  • 验证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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 15:36:04