























核心摘要 (TL;DR)
- 问题现象:在 VS Code 中使用 Remote - SSH 插件连接服务器,或打开新终端时,系统频繁弹窗要求输入远程主机的登录密码。
- 根本原因:SSH 客户端与服务端之间未建立公钥信任机制,导致鉴权退化为最基础的密码验证交互。
- 极速解法:本地生成密钥对 -> 使用
ssh-copy-id自动写入公钥到服务器 -> 在本地.ssh/config绑定IdentityFile。
基本信息
- 问题分类:SSH 鉴权配置 / 开发流优化
- 环境说明:任意支持 OpenSSH 的本地终端(如 Git Bash, macOS Terminal)及远程 Linux 服务器
- 触发条件:新环境初始化、首次配置 VS Code 远程工作区。
- 核心目标:建立非对称加密信任关系,实现 VS Code 丝滑直连。
以下是使用 ssh-copy-id 命令将本地公钥推送至远程主机的标准中间过程证明(已脱敏):
1 | $ ssh-copy-id -i ~/.ssh/id_rsa.pub your_username@your_remote_host |
VS Code 的 Remote 架构会在后台建立多个 SSH 连接(用于文件同步、终端进程、插件扩展等)。如果你只依赖传统的密码认证,由于 VS Code 本身并不缓存 SSH 密码,就会导致每一次新建底层连接时,顶部命令面板都会强制弹出密码输入框。不仅打断开发心流,一旦输错还需要重新走一遍加载流程。
authenticity can't be established 的警告。这是防范中间人攻击的安全机制,必须手动输入 yes 将该主机的指纹记录到本地的 known_hosts 文件中,随后再输入密码,才能完成公钥的下发。打开本地终端(Windows 用户请务必使用 Git Bash 或 PowerShell),执行生成命令:
1 |
|
利用日志中展示的 ssh-copy-id 工具,将本地公钥安全地追加到服务器的授权列表中:
1 |
|
输入最后一次密码后,看到提示 Number of key(s) added: 1 即表示公钥已成功入驻远程服务器。
告知 VS Code 应该使用哪把“钥匙”去开门。
Ctrl+Shift+P (Mac 为 Cmd+Shift+P)。Remote-SSH: Open SSH Configuration File...。~/.ssh/config 中为你配置的主机添加 IdentityFile 字段:1 | Host my-dev-server |
配置保存后,点击 VS Code 的连接按钮,即可全程无感直达远程工作区。
严格的权限控制(最容易踩的坑):
SSH 守护进程(sshd)对存放公钥的文件权限要求极其苛刻。如果服务器端的目录权限过大,出于安全考虑,免密登录会直接失效。请确保远程主机执行了以下授权:
1 | chmod 700 ~/.ssh |
1 | - **配置覆盖问题**: |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。