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

VSCode怎么配置SSH密钥连接_VSCode免密登录远程服务器教程【进阶】

VSCode Remote-SSH 连接失败主因是私钥未加载,常见于 SSH 配置语法错误、私钥权限非600、或 VSCode 未使用系统默认 ssh;需检查 ~/.ssh/config 格式、远程依赖(bash/tar/ps/$HOME可写)及 Windows 多 OpenSSH 实例冲突。 VSCode 本身不管理 SSH 密钥,它完全依赖本地 OpenSSH 客户端的配置和文件权限。只要
ssh user@host
在终端里能免密,Remote-SSH 就大概率能;反之,VSCode 能连上而终端不能,说明 VSCode 没走你预期的配置路径。 为什么 VSCode 连接时还弹密码框? 这不是 VSCode 的 bug,而是它没加载到你的私钥——常见原因有三个:
~/.ssh/config
语法错误(比如缩进不规范、
Host
块没闭合、字段名拼错成
IdentifyFile
) 私钥文件权限不是
600
(Windows 上用 OpenSSH for Windows 也一样,
chmod 600 ~/.ssh/id_ed25519
必须执行) VSCode 没用系统默认
ssh
,而是读了别的路径:检查设置里
remote.SSH.path
是否被手动填了绝对路径;留空才走系统默认 验证方式:在终端运行
ssh -F ~/.ssh/config -v myserver
(把
myserver
换成你 config 里的
Host
名),看输出里有没有
Offering public key
和
Authentication succeeded
。
~/.ssh/config
怎么写才被 Remote-SSH 正确识别? Remote-SSH 解析
~/.ssh/config
的逻辑和命令行
ssh
一致,但只认标准字段,且对格式敏感。以下是最小可用模板:
Host myserver HostName 192.168.1.100 User ubuntu IdentityFile ~/.ssh/id_ed25519 Port 2222
注意点: 每个字段后必须有至少一个空格或 tab 缩进(不能顶格)
IdentityFile
路径推荐用
~
,不要写绝对路径如
C:\Users\name\.ssh\id_rsa
(Windows 上 OpenSSH for Windows 支持
~
) 别加
IdentitiesOnly yes
却不配
IdentityFile
,这会让 ssh 直接跳过所有密钥尝试 注释用
#
,但别写在行尾(有些旧版解析器会吃掉整行) 远程服务器上哪些环境缺失会导致“卡在 Setting up SSH Host”? 这不是认证失败,而是 VSCode Remote-SSH 在远端部署 server 二进制时缺依赖。典型现象:连接成功、能看到 shell 提示符,但 VSCode 界面一直转圈,日志里出现
Failed to fetch remote environment
。 登录服务器后执行这条命令排查: 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 mktemp'
关键要求: 用户
$SHELL
必须是
/bin/bash
或
/bin/sh
,不能是
/sbin/nologin
或自定义受限 shell
tar
和
ps
必须存在(Alpine 镜像常缺
procps
包,
apk add procps
补)
$HOME
可写:
touch $HOME/test && rm $HOME/test
要成功(NFS 或容器挂载时权限继承容易出问题) Windows 用户特别容易踩的坑 Windows 自带 OpenSSH(
C:\Windows\System32\OpenSSH\ssh.exe
)和 Git Bash 自带的 OpenSSH 不共享
ssh-agent
,且 config 加载行为略有差异。 建议统一路径: 删掉
remote.SSH.path
设置,让 VSCode 走系统默认 确认
~/.ssh/config
是被 Windows OpenSSH 读的(Git Bash 的 config 默认在
/usr/bin/
下,不生效) 如果用了 WSL,关掉
remote.ssh.useLocalServer: true
(设为
false
),否则路径解析可能错乱 最稳的做法:在 PowerShell 里跑
ssh -F "$env:USERPROFILE\.ssh\config" myserver
成功了,VSCode 基本就不会卡在认证环节。 真正麻烦的从来不是生成密钥或复制公钥,而是 config 文件里一个空格、远程服务器上一个缺失的
ps
、或者 Windows 上两个 OpenSSH 实例之间的静默冲突——这些地方不报错,只默默回退到密码认证。

相关文章