VS Code Remote SSH连接远程主机报错:无法找到公钥权限被拒绝
VS Code Remote SSH 公钥连接报错修复方案
连接时返回的核心报错如下:
no such identity: publickey.pem: No such file or directory
Permission denied (publickey).
报错核心触发逻辑:SSH客户端读取配置中指定的身份私钥publickey.pem时找不到对应文件,导致公钥认证流程直接失败,返回权限拒绝提示,无法建立连接。
分步排查修复
- 先定位本地私钥的实际存储路径
绝大多数找不到密钥的问题都是配置里写了相对路径导致的——SSH默认只会从当前用户的.ssh目录(Windows是C:\Users\你的用户名\.ssh\,Mac/Linux是~/.ssh/)下读取相对路径指定的密钥,只要密钥放在其他目录就会触发文件不存在报错。
本地终端执行命令全局查找密钥位置:
Windows环境执行:dir /s /b C:\publickey.pem(可替换盘符为你存放密钥的分区)
Mac/Linux环境执行:find / -name "publickey.pem" 2>/dev/null
找到文件后先修复私钥权限:SSH会强制要求私钥不能被其他用户访问,否则直接拒绝加载。Mac/Linux下执行chmod 600 你查到的私钥绝对路径即可;Windows下右键私钥文件-属性-安全,删除除当前登录用户外的所有权限条目,仅保留当前用户的完全控制权限。 - 修正SSH配置文件里的密钥路径
在VS Code中按F1调出命令面板,搜索执行Remote-SSH: Open SSH Configuration File,选择你当前连接使用的config文件,找到对应远程主机的配置段,把IdentityFile字段的值从原来的相对路径publickey.pem替换为刚才查到的私钥绝对路径,示例配置如下:
注意路径不要包含中文、全角空格,避免路径解析失败。Host 你的远程主机别名 HostName 远程主机IP User 登录用户名 IdentityFile C:\Users\张三\ssh_keys\publickey.pem # Windows示例 # IdentityFile /home/zhangsan/ssh_keys/publickey.pem # Mac/Linux示例 - 校验远程主机的公钥部署
路径修正后如果仍然报公钥权限错误,先在本地终端直接执行SSH命令测试直连:ssh 远程用户名@远程主机IP -i 你的私钥绝对路径。如果直连失败,说明远程主机上没有正确配置对应公钥:需要把本地和publickey.pem同目录下的publickey.pem.pub文件内容,追加到远程主机对应用户家目录下的.ssh/authorized_keys文件末尾,同时给远程主机上的目录和文件修正权限:chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys - 清理异常缓存重试
回到VS Code命令面板,执行Remote-SSH: Kill VS Code Server on Host清理远程主机上残留的异常服务进程,同时打开本地~/.ssh/known_hosts文件,删除对应远程主机IP的旧密钥记录,重新发起连接即可。
内容的提问来源于stack exchange,提问作者Dmytro
相关产品推荐
相关产品推荐

