vscode ssh免密登录linux服务器教程
要在 VSCode 中实现 SSH 免密登录 Linux 服务器,核心是配置 SSH 公钥认证,让 VSCode 调用本地已配置好的 SSH 连接。以下是完整的操作步骤:
1. 生成本地 SSH 密钥对
打开本地终端(Windows 可使用 PowerShell 或 Git Bash),执行以下命令生成密钥对。推荐使用更安全、性能更好的 ed25519 算法:
ssh-keygen -t ed25519 -C "your_email@example.com"
执行后一路回车即可。注意:如果想完全免密,在提示输入 passphrase 时直接回车留空,否则每次连接仍需输入密钥密码。
2. 将公钥上传到服务器
方法一(推荐,适用于 macOS/Linux 及已安装 ssh-copy-id 的 Windows 环境):
ssh-copy-id user@your_server_ip
执行后会提示输入一次服务器密码,之后公钥会自动追加到服务器的 ~/.ssh/authorized_keys 文件中。
方法二(适用于未安装 ssh-copy-id 的 Windows 环境):
在 PowerShell 中执行:
Get-Content ~/.ssh/id_ed25519.pub | ssh user@your_server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
同样需要输入一次服务器密码。
3. 检查并设置服务器端权限
登录服务器,确保 .ssh 目录和 authorized_keys 文件的权限正确,这是免密登录成功的关键:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
如果权限过开放,SSH 服务会拒绝读取密钥,导致免密登录失败。
4. 在终端测试免密登录
在本地终端执行以下命令,验证配置是否生效:
ssh user@your_server_ip
如果无需输入密码即可登录,说明 SSH 密钥认证已配置成功。
5. 配置 VSCode 连接
- 安装扩展:在 VSCode 扩展市场中搜索并安装 Remote - SSH(Microsoft 官方扩展)。
- 连接主机:
- 按下
F1或Ctrl+Shift+P(Mac:Cmd+Shift+P)打开命令面板。 - 输入 Remote-SSH: Connect to Host 并选择。
- 如果之前已在终端测试过,这里可能会自动识别主机名。如果没有,可以选择 Add New SSH Host…,然后输入
ssh user@your_server_ip格式的命令添加主机。
- 按下
- (可选)配置 SSH Config 文件:如需指定密钥文件或设置别名,可以编辑本地
~/.ssh/config文件:
配置后,在 VSCode 的 Remote-SSH 中即可通过别名Host MyServerAlias # 自定义别名 HostName your_server_ip # 服务器 IP 或域名 User username # 登录用户名 IdentityFile ~/.ssh/id_ed25519 # 私钥路径MyServerAlias连接。
6. 验证与连接
在 VSCode 中再次通过 Remote-SSH: Connect to Host 选择你的主机或别名进行连接。如果配置正确,连接过程中将不会弹出密码输入框,底部状态栏会显示连接成功的信息。
常见问题排查
- 连接时仍要求输入密码:首先确认在系统终端中执行
ssh user@your_server_ip是否已免密。如果终端可以而 VSCode 不行,检查 VSCode 的 Remote-SSH 扩展是否已正确安装,并尝试重启 VSCode。 - 权限问题:确保服务器上
~/.ssh目录权限为 700,~/.ssh/authorized_keys文件权限为 600。 - Windows 环境特殊说明:Windows 系统可能默认未提供
ssh-copy-id命令,可使用上述方法二手动上传公钥。
只要你的系统终端能实现 SSH 免密登录,VSCode 通过 Remote-SSH 扩展就能无缝继承这一配置,实现一键连接。
是的,有专门追求性能的优化方式。核心是选择 Ed25519 算法,它在密钥生成、签名和验证速度上都显著优于传统的 RSA 和 ECDSA。
为什么 Ed25519 性能最优?
- 算法效率高:Ed25519 基于椭圆曲线加密,其签名生成和验证速度比 RSA-4096 快约 30%。在批量 SSH 操作(如 Ansible 管理多台服务器)时,使用 Ed25519 密钥的总耗时可比 RSA-4096 减少约 12 秒(从 98 秒降至 86 秒)。
- 密钥生成快:Ed25519 的密钥生成速度比 RSA 快约 3 倍。
- 登录验证快:其登录验证速度比 RSA 快约 10 倍。
- 密钥尺寸小:Ed25519 公钥仅约 68 字节,而 RSA-4096 公钥超过 800 字节。更小的密钥意味着更快的传输和更低的网络开销。
如何生成高性能的 Ed25519 密钥?
执行以下命令即可生成:
ssh-keygen -t ed25519 -C "your_email@example.com"
-t ed25519:指定使用 Ed25519 算法。-C:添加注释(通常用邮箱),便于标识密钥用途。
关键提示:在提示输入 passphrase(密钥密码)时,如果直接按回车留空,则可实现完全免密登录(无需输入密码)。但这会降低密钥本身的安全性,请仅在受信任的私人环境中使用。
进阶性能调优(可选)
- 调整密钥生成轮数(rounds):Ed25519 密钥生成时默认使用 16 轮哈希计算。理论上,减少轮数可以略微加快生成速度,但会降低对抗暴力破解的强度。不过,这仅影响密钥生成阶段,对后续 SSH 连接性能无影响。一般用户无需调整。
- 开启 SSH 连接复用(ControlMaster):这能让你对同一服务器的多个 SSH 会话共享一个 TCP 连接,避免重复握手和密钥交换。实测第二次连接耗时可从 1.2 秒降至 0.1 秒。配置方法是在
~/.ssh/config中添加:
然后创建目录:Host * ControlMaster auto ControlPath ~/.ssh/sockets/%r@%h-%p ControlPersist 600mkdir -p ~/.ssh/sockets && chmod 700 ~/.ssh/sockets。
总结
若你只追求极致的 SSH 连接性能,最佳实践就是:
- 使用
ssh-keygen -t ed25519生成密钥。 - 在安全可控的环境下,生成密钥时不设置 passphrase(直接回车)。
- 在 SSH 配置中启用连接复用(ControlMaster)。
这样就能在算法层面和连接管理层面都获得最佳性能。
这两条命令用于在Linux系统中设置SSH相关目录和文件的权限,以确保系统安全。
1. chmod 700 ~/.ssh
- 功能:此命令将用户主目录下的
.ssh目录的权限设置为700。 - 权限解释:
- 在Linux的权限表示法中,
700是一个八进制数,对应rwx------。其中,第一个数字7代表文件所有者(user)的权限,它是读(r = 4)、写(w = 2)和执行(x = 1)权限的总和(4 + 2 + 1 = 7),意味着文件所有者对.ssh目录具有读、写和执行权限。 - 第二个数字
0代表所属组(group)的权限,这里表示所属组对该目录没有任何权限。 - 第三个数字
0代表其他用户(others)的权限,同样表示其他用户对该目录没有任何权限。
- 在Linux的权限表示法中,
- 目的:限制对
.ssh目录的访问,只有文件所有者能够对其进行操作,防止其他用户篡改或访问其中的敏感文件,比如SSH私钥等。
2. chmod 600 ~/.ssh/authorized_keys
- 功能:该命令将
.ssh目录下的authorized_keys文件的权限设置为600。 - 权限解释:
600对应rw-------。数字6表示文件所有者对authorized_keys文件具有读(r = 4)和写(w = 2)权限(4 + 2 = 6)。- 同样,第二个和第三个数字
0分别表示所属组和其他用户对该文件没有任何权限。
- 目的:
authorized_keys文件用于存储允许通过SSH无密码登录到该系统的公钥。将其权限设置为600,确保只有文件所有者能够读取和修改该文件,防止其他用户未经授权修改此文件,进而保证SSH基于密钥认证的安全性。
在设置这两个权限时,需要确保操作的用户是文件所有者或具有足够权限(如 root 用户),否则可能会因为权限不足而导致设置失败。
更多推荐



所有评论(0)