SSH密钥必须设为600权限,否则VSCode Remote-SSH插件因权限校验失败而拒绝加载;同时需确保.ssh目录权限为700、禁用密码登录、config中不暴露私钥路径、Live Share禁用来宾终端,安全依赖SSH配置与密钥管理全流程。

SSH密钥必须设为600权限,否则连接直接失败
VSCode的Remote-SSH插件在读取私钥时会严格校验文件权限。如果~/.ssh/id_rsa或~/.ssh/id_ed25519权限不是600(即-rw-------),它会拒绝加载并报错:Permissions for 'xxx' are too open。
实操建议:
- 生成密钥后立即执行:
chmod 600 ~/.ssh/id_rsa - 检查
~/.ssh目录权限是否为700(drwx------),否则ssh服务端也会拒收公钥 - 不要用
sudo启动VSCode,否则可能以root身份读取私钥,触发额外权限检查
禁用密码登录,只保留密钥认证
远程服务器上若仍开启PasswordAuthentication yes,等于给暴力破解留了后门。VSCode本身不强制该策略,但安全配置必须由服务器端控制。
实操建议:
- 编辑
/etc/ssh/sshd_config,确认含这两行:PasswordAuthentication no、PubkeyAuthentication yes - 重启服务:
sudo systemctl restart sshd(Ubuntu/Debian)或sudo systemctl restart sshd.service(CentOS/RHEL) - 测试前先用另一终端保持连接,避免锁死自己
.ssh/config里别写明文密码,也别暴露敏感路径
有人图省事在~/.ssh/config里加IdentityFile /home/user/keys/prod.key,结果Git提交时一并上传——这比把密码贴在README里还危险。
实操建议:
- 私钥路径统一放在
~/.ssh/下,用相对路径:IdentityFile ~/.ssh/id_rsa_prod - 禁止在
config中使用ProxyCommand调用含硬编码密码的脚本 - 若需多环境隔离,用
Include分文件管理,主config不包含任何具体凭据
Live Share共享时终端默认关闭,别手滑打开
VSCode Live Share默认关闭来宾终端访问,但有人在.vsliveshare/settings.json里设"allowGuestTerminal": true,等于把服务器shell权限白送给协作者。
实操建议:
- 协作前检查该配置项是否为
false,尤其当项目涉及数据库或敏感服务时 - 若真需调试终端,改用
Remote-SSH单独开一个受限会话,而非通过Live Share暴露 - 团队内部应约定:所有共享会话必须启用
requireAuthentication且绑定企业域邮箱
chmod,多一行no,都可能让整个环境裸奔。


















