

新闻资讯
行业动态VS Code通过Remote-SSH连接失败主因是权限与密钥配置不当:本地私钥(600)、config(600)、远程authorized_keys(600)及.ssh目录(700)权限须合规;需确认SSH配置路径一致、禁用ssh-agent依赖、远程sshd启用PubkeyAuthentication,并注意Ed25519密钥在旧服务器上的兼容性问题。
VS Code 通过 Remote-SSH 扩展连接远程服务器时,最常见的失败原因就是权限配置不当或 SSH 密钥不被正确识别。核心问题通常不是“连不上”,而是“连上了但被拒绝”——比如提示 Permission denied (publickey) 或 Failed to authenticate。关键在于本地 SSH 配置、密钥格式、远程用户家目录及 .ssh 权限三者必须同时合规。
OpenSSH 对私钥文件权限极其敏感:私钥(如 id_rsa)不能被组或其他人读写,否则直接忽略。Windows(WSL 或 Git Bash)和 macOS/Linux 都适用此规则。
ls -l ~/.ssh/id_rsa(Linux/macOS)或 ls -l $HOME/.ssh/id_rsa(WSL),确认输出中权限为 -rw-------(即 600)chmod 600 ~/.ssh/id_rsa
~/.ssh/config 权限为 600,~/.ssh/authorized_keys(远程端)为 600,~/.ssh 目录为 700vim 或 code --disable-extensions 编辑Remote-SSH 默认读取系统 SSH 配置(~/.ssh/config),但如果你在 Windows 上用 OpenSSH for Windows,或自定义了 SSH_CONFIG_FILE 环境变量,VS Code 可能找不到配置。
Ctrl+Shift+P)中运行 Remote-SSH: Open Configuration File...,选择对应平台的 config 路径,确保它和终端里 ssh -F 指定的路径一致~/.ssh/config 中明确指定密钥路径:Host myserver
HostName 192.168.1.100
User alice
IdentityFile ~/.ssh/my_private_key
ssh-add 后依赖 agent —— Remote-SSH 默认不继承终端的 ssh-agent,除非你启用了 "remote.ssh.enableAgentForwarding": true 并确认 agent 正常运行sshd 配置与用户环境即使密钥和权限都对,远程服务器的 SSH 守护进程也可能禁用公钥认证,或用户 shell、家目录权限异常导致认证跳过。
/etc/ssh/sshd_config 是否含:PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
sudo systemctl restart sshd
chmod 755 ~(不是 777!)~/.ssh/authorized_keys 内容是否完整、无多余空格或换行;每行一个公钥,开头是 ssh-rsa 或 ssh-ed25519,结尾是邮箱或注释ssh -v -F ~/.ssh/config myserver,观察日志中是否尝试 publickey、是否报 Authentication refused 或 no mutual signature algorithm(后者常见于旧版 OpenSSH 与新密钥类型不兼容)新版 ssh-keygen 默认生成 Ed25519 密钥,但部分老旧服务器(如 CentOS 7 默认 OpenSSH 6.6)不支持。若遇到 no mutual signature algorithm,需降级生成 RSA 密钥。
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_compatible
ssh-copy-id -i ~/.ssh/id_rsa_compatible.pub user@host(若失败,手动复制内容到 ~/.ssh/authorized_keys)~/.ssh/config 中绑定该密钥:IdentityFile ~/.ssh/id_rsa_compatible
基本上就这些。多数连接失败不是网络问题,而是权限链上某一处松动——从本地私钥权限、config 文件路径、远程目录结构到 sshd 配置,环环相扣。逐项核对日志输出,比反复重试更有效。