SSH仍需输密码的主因是密钥未生效:公钥未添加至服务器authorized_keys、权限非600/700、VSCode未正确读取SSH配置、服务端PubkeyAuthentication被禁用、安全组未放行22端口或ssh-agent未加载私钥。
为什么
还要输密码?先确认密钥是否真生效
VSCode 里点连接还是弹密码框,大概率不是 VSCode 的问题,而是 SSH 密钥没被服务器正确信任。常见错误是:本地生成了
,但没把公钥
追加到服务器的
里,或者权限不对。
实操建议:
在服务器上运行
,确保文件存在且权限是
(
)
检查
目录权限必须是
(
),否则 OpenSSH 会直接忽略密钥
用
手动测试,比 VSCode 更早暴露问题
阿里云/腾讯云控制台「重置实例密码」操作会清空
,改过密码务必重传公钥
VSCode Remote-SSH 插件连不上?检查
文件写法
VSCode 不读
里的别名或参数,除非你明确告诉它用哪个配置文件——而且它只认绝对路径、不支持波浪号
。
实操建议:
在 VSCode 中按
(Mac 是
),输入
,选
选「Open SSH Configuration File...」,选
(不能写成
)
配置段必须包含
(IP 或域名)、
、
(绝对路径,如
)
避免用
,某些旧版 OpenSSH 会因此拒绝连接
Ubuntu 服务器端 SSH 配置容易关掉密钥登录
新装的 Ubuntu(尤其腾讯云镜像)默认允许密码和密钥同时登录;但一旦手动改过
,可能误关
,或者开了
却忘了配密钥——结果就是彻底登不进去。
VSCode 1.118
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
下载
实操建议:
先用密码登录一次,检查
确保
且未被注释;若想禁密码,等密钥确认可用后再改
改完必须执行
(Ubuntu 22.04+ 是
,不是
)
阿里云安全组和腾讯云网络 ACL 必须放行 22 端口,这个错误不会报在 SSH 日志里,但会卡在「Connection refused」
用
管理私钥密码,避免每次输 passphrase
如果你的私钥设了 passphrase(应该设),VSCode 默认不会自动唤醒
,导致每次连接都弹窗输密码——不是 VSCode 的 bug,是 agent 没加载。
实操建议:
终端里先运行
,再用
加载密钥
VSCode 启动前需继承这个 shell 环境;Linux/macOS 下推荐从终端启动:
Windows WSL 用户注意:
不跨会话,每次新开 terminal 都要重 run
和
别用 VSCode 内置终端做
,它的环境变量不会透传给 Remote-SSH 连接进程
密钥路径写错、
权限松了、
没跑起来——这三个点占了八成失败案例。其他都是细节,但细节卡住就进不去。
sshid_rsaid_rsa.pub~/.ssh/authorized_keysls -l ~/.ssh/authorized_keys600chmod 600 ~/.ssh/authorized_keys~/.ssh700chmod 700 ~/.sshssh -T -i ~/.ssh/id_rsa user@hostauthorized_keysconfig~/.ssh/config~Ctrl+Shift+PCmd+Shift+PRemote-SSH: Connect to Host...Configure SSH Hosts.../home/yourname/.ssh/config~/.ssh/configHostNameUserIdentityFile/home/yourname/.ssh/id_rsaIdentitiesOnly yes/etc/ssh/sshd_configPubkeyAuthentication yesPasswordAuthentication nosudo grep -E "PubkeyAuthentication|PasswordAuthentication" /etc/ssh/sshd_configPubkeyAuthentication yesPasswordAuthentication nosudo systemctl restart sshsshsshdssh-agentssh-agenteval $(ssh-agent)ssh-add ~/.ssh/id_rsacode --no-sandbox --user-data-dir="/tmp/vscode-dev"ssh-agentssh-agentssh-addssh-addauthorized_keysssh-agent