跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

VSCode配置SSH密钥登录 VSCode远程连接免密设置

VSCode远程连接报“Permission denied (publickey)”主因是本地私钥未被OpenSSH正确加载,需确保私钥权限为600、IdentityFile用绝对路径、~不被展开、authorized_keys目录权限700且文件600。 VSCode 远程连接报
Permission denied (publickey)
,基本就是本地私钥没被 OpenSSH 正确加载——不是没生成,而是权限、路径或配置有一处没对上。 私钥权限必须是 600,否则 OpenSSH 直接静默跳过 OpenSSH 在读取私钥前会强制校验文件权限,只要不是
600
(仅所有者可读写),就拒绝加载,且不报错。哪怕公钥已正确写入服务器
~/.ssh/authorized_keys
,这一步失败,认证流程就终止了。 Linux/macOS:运行
chmod 600 ~/.ssh/id_ed25519
(把
id_ed25519
换成你实际用的私钥名) Windows(Git Bash / WSL):同样用
chmod 600
;PowerShell 不推荐,NTFS 权限需额外用
icacls
对齐 别把私钥放 OneDrive、iCloud 或其他同步目录下——它们可能在后台重置权限,导致反复失效 用 VSCode 或 Notepad++(UTF-8 无 BOM)编辑私钥,记事本可能加 BOM 或 CRLF 换行,导致解析失败 ~/.ssh/config 里 IdentityFile 必须写绝对路径 VSCode 的 Remote-SSH 插件不展开
~
,哪怕你在终端里写
~/id_ed25519
能通,放到
config
里也会被忽略。它只认字面意义的路径。 正确写法:
IdentityFile /home/you/.ssh/myserver_key
(Linux/macOS)或
IdentityFile C:\Users\you\.ssh\myserver_key
(Windows Git Bash) 加一行
IdentitiesOnly yes
,避免 SSH agent 或其他密钥干扰当前 Host 的匹配 Host 别名要和你在 VSCode 命令面板里选的一致,比如配置了
Host myserver
,就要选
myserver
,不能填
user@host
验证是否真走了 config:打开命令面板 →
Remote-SSH: Show Log
,看
Running script with connection command
那行是否带上了
-F /path/to/config
和你指定的
-i /abs/path/to/key
远程服务器环境缺失会导致卡在 “Setting up SSH Host” 这不是认证失败,而是 VSCode Server 二进制部署失败。它需要几个基础命令和可写环境,缺一不可。 VSCode 1.118 微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。 下载 手动登录服务器,执行:
bash -c 'echo $SHELL && which bash tar ps kill'
,输出里缺任何一个都要补装(Alpine 用户常缺
procps
) 检查
/etc/passwd
里用户默认 shell 是否为
/bin/bash
或
/bin/sh
;
/sbin/nologin
或自定义受限 shell 会直接退出 确认
$HOME
可写:
touch $HOME/test && rm $HOME/test
,NFS、SELinux、容器挂载场景下容易出问题 删掉残留的半截安装:
rm -rf ~/.vscode-server
,首次连接失败后这个目录常卡住后续尝试 远端 ~/.ssh/authorized_keys 权限比本地还关键 服务端权限不对,SSH 守护进程会直接拒收公钥,连日志都不留痕迹。这是最常被忽略的环节。
~/.ssh
目录权限必须是
700
:
chmod 700 ~/.ssh
~/.ssh/authorized_keys
文件权限必须是
600
:
chmod 600 ~/.ssh/authorized_keys
用户家目录(
~
)权限不能太宽,建议
755
或更严格;
777
会导致服务端拒绝读取
authorized_keys
确认
/etc/ssh/sshd_config
里
PubkeyAuthentication yes
已启用,且未被
#
注释 真正卡点往往不在 VSCode 设置里,而在 OpenSSH 客户端行为与服务端策略的交界处——比如本地权限松了、远程目录权限松了、
config
路径写错了、或者
.bashrc
多打了行
echo
。先用终端
ssh -T user@host
验证,再进 VSCode,能省掉一半排查时间。

相关文章