如何配置VS Code SFTP扩展以适配1Password SSH代理?
解决VS Code SFTP扩展连接DigitalOcean Droplet的认证失败问题
针对你用1Password作为SSH代理托管密钥的场景,以下是可直接复用的sftp.json配置方案,核心是让SFTP扩展正确调用SSH代理而非直接指定密钥文件:
方案1:复用本地.ssh/config配置(推荐)
如果你的~/.ssh/config已经能正常通过SSH连接Droplet(比如配置了Host do-droplet的别名),直接在sftp.json中引用这个别名即可:
{ "name": "DigitalOcean Droplet", "host": "do-droplet", // 替换为你.ssh/config里的Host别名 "protocol": "sftp", "port": 22, "username": "your-remote-user", // 替换为Droplet的用户名(如root或自定义sudo用户) "remotePath": "/path/to/your/remote/project", // 替换为远程项目的根路径 "uploadOnSave": true, // 可选:本地保存文件时自动同步到远程 "useAgent": true, // 必须开启:启用SSH代理(1Password托管密钥的核心) "agent": "$SSH_AUTH_SOCK", // 自动读取系统SSH代理的socket路径 "ignore": [ ".vscode", ".git", "node_modules", "*.log" ] // 可选:忽略不需要同步的文件/文件夹 }
方案2:直接在sftp.json中配置代理
如果不想依赖.ssh/config,可直接指定代理相关参数:
{ "name": "DigitalOcean Droplet", "host": "your-droplet-ip", // 替换为Droplet的公网IP或域名 "protocol": "sftp", "port": 22, "username": "your-remote-user", "remotePath": "/path/to/your/remote/project", "uploadOnSave": true, "useAgent": true, "agent": "$SSH_AUTH_SOCK", // 注意:不要添加privateKey字段,因为密钥由1Password代理托管 "ignore": [ ".vscode", ".git", "node_modules" ] }
关键注意事项
- 不要添加privateKey字段:你的密钥由1Password的SSH代理托管,SFTP扩展通过代理获取密钥,硬写密钥路径会导致认证失败。
- 确认VS Code加载了SSH_AUTH_SOCK:重启VS Code确保环境变量正确读取,避免代理路径失效。
- 验证1Password代理状态:终端执行
ssh-add -l确认能看到托管的密钥,且1Password的SSH代理功能已开启。 - 远程服务器配置检查:确保Droplet的
/etc/ssh/sshd_config中开启了AllowAgentForwarding yes(默认已开启,若修改过需确认)。
内容的提问来源于stack exchange,提问作者headmeetwall
相关产品推荐
相关产品推荐

