跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

如何在VSCode中通过SSH免密登录阿里云/腾讯云的Ubuntu服务器

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

相关文章