使用Remote-SSH通过跳板机连目标主机遇权限及管道错误求助
解决VS Code Remote-SSH跳板机连接权限及管道错误问题
核心错误分析
日志中明确提示Bad owner or permissions on C:\Users\hdl/.ssh/config,这是Windows OpenSSH的权限校验导致的——.ssh目录和config文件必须仅对当前用户开放权限,其他用户(如Administrators、Everyone)不能拥有访问权限。后续的管道错误是权限问题引发的连锁反应。
解决方案
1. 修复.ssh目录与config文件权限
- 打开文件资源管理器,定位到
C:\Users\hdl\.ssh目录 - 右键目录→属性→安全选项卡→高级
- 点击「禁用继承」,选择「将继承的权限转换为此对象的显式权限」
- 删除所有非当前用户(
hdl)的权限条目 - 仅保留当前用户的权限,设置为「完全控制」
- 对
.ssh/config文件重复上述权限配置步骤,确保文件仅当前用户可访问
2. 修正SSH配置文件写法
调整~/.ssh/config的配置,避免模糊匹配并指定SSH绝对路径:
Host jump-server HostName 202.x.x.x # 替换为实际跳板机IP User jump Port 22 Host 1921via202 HostName 192.x.x.x # 替换为实际目标主机IP User target Port 22 ProxyCommand C:\WINDOWS\System32\OpenSSH\ssh.exe -W %h:%p jump-server
- 跳板机使用明确别名(如
jump-server),避免通配符引发的匹配问题 - ProxyCommand指定Windows OpenSSH的绝对路径,规避环境变量查找异常
3. 验证基础SSH连接
打开CMD终端,直接执行:
ssh 1921via202
如果此命令能正常连接目标主机,说明SSH配置和权限已修复;若仍报错,优先解决终端中的SSH问题,再尝试VS Code Remote-SSH连接。
4. 调整VS Code Remote-SSH设置
- 打开VS Code设置,搜索
remote.SSH.path,设置为C:\WINDOWS\System32\OpenSSH\ssh.exe - 搜索
remote.SSH.configFile,确认路径为C:\Users\hdl\.ssh\config(使用Windows反斜杠) - 重启VS Code后重新尝试连接
5. 管道错误附加排查
- 关闭VS Code所有终端窗口,或重启电脑后重试
- 临时关闭防火墙、杀毒软件,排查是否有连接拦截
内容的提问来源于stack exchange,提问作者sunny
相关产品推荐
相关产品推荐

