【效率提升】告别繁琐,VS Code 配置 Remote-SSH 免密登录全记录

4 阅读3分钟

为什么学这个

最近经常用 VS Code 的 Remote-SSH 插件远程连接 Linux 服务器写代码。体验确实好,但有一个极其破坏心流的痛点:每次打开新窗口、重启 VS Code 甚至网络稍微波动重连时,都要手动输入一遍服务器密码。 为了彻底告别这种无意义的重复劳动,我花时间梳理并配置了 SSH 的基于公钥的免密登录。配置完成后,点击即连,开发体验直线拉满。

核心内容/步骤

SSH 免密登录的核心原理很简单:在本地生成一把“钥匙”(私钥),把对应的“锁”(公钥)放到服务器上。 之后连接时,双方自动核对,匹配上了就直接放行。

具体分为三步:

1. 本地生成 SSH 密钥对

打开本地电脑的终端(Windows 用 PowerShell,Mac/Linux 用 Terminal),输入以下命令生成密钥对。推荐使用更安全、性能更好的 ed25519 算法:

Bash

ssh-keygen -t ed25519

关键点:执行后一路回车到底即可。千万不要设置密码(passphrase) ,否则每次连接还是会弹窗让你输入密钥的密码,失去了免密的意义。

完成后,会在本地的 ~/.ssh/ 目录下生成两个文件:id_ed25519(私钥,打死不能告诉别人)和 id_ed25519.pub(公钥,用来上传到服务器)。

2. 将公钥上传到服务器端

我们需要把刚才生成的 .pub 公钥文件内容,追加到服务器的 ~/.ssh/authorized_keys 文件中。

  • 如果是 Mac / Linux 环境:

    系统自带一键上传命令,极度舒适(执行时按提示输入一次服务器密码即可):

    Bash

    ssh-copy-id username@your_server_ip
    
  • 如果是 Windows 环境:

    Windows 没有内置上面的命令,可以通过 PowerShell 执行以下单行命令实现同样的效果:

    PowerShell

    Get-Content ~/.ssh/id_ed25519.pub | ssh username@your_server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
    

3. 配置 VS Code 的 SSH Config

锁和钥匙配好后,最后告诉 VS Code 怎么用这把钥匙。

  1. 在 VS Code 中按 Ctrl + Shift + P (Mac: Cmd + Shift + P)。
  2. 搜索并选择 Remote-SSH: Open SSH Configuration File...
  3. 选择你的本地 config 文件(通常在 ~/.ssh/config)。
  4. 按照如下格式添加配置:

Plaintext

Host MyDevServer                # 别名,会显示在 VS Code 侧边栏,随便起
  HostName your_server_ip       # 服务器的真实 IP 或域名
  User username                 # 登录服务器的用户名
  IdentityFile ~/.ssh/id_ed25519 # 本地私钥的绝对路径

保存配置。现在点击 VS Code 侧边栏的 MyDevServer,你会发现直接就秒连上了,再也不用输密码!

遇到的问题与解决方法

问题 1:Windows 下用命令行上传公钥老是报错?

解决:Windows PowerShell 的管道符处理有时比较折腾。如果上面的命令报错,最简单粗暴的“土办法”是:用记事本打开本地的 ~/.ssh/id_ed25519.pub,复制里面的那一行文本。然后用密码正常 SSH 登录进服务器,执行 nano ~/.ssh/authorized_keys,把刚才复制的内容粘贴进去,保存退出,并执行 chmod 600 ~/.ssh/authorized_keys 确保权限正确即可。

问题 2:配置完了,VS Code 还是弹窗要密码?

解决:90% 是服务器端 .ssh 目录的权限不对。SSH 协议对权限要求极严。登录服务器排查以下两点:

  1. ~/.ssh 目录的权限必须是 700 (chmod 700 ~/.ssh)。
  2. ~/.ssh/authorized_keys 文件的权限必须是 600 (chmod 600 ~/.ssh/authorized_keys)。

收获与总结

通过这次折腾,不仅解决了实际的痛点,也加深了对 SSH 协议中公私钥认证机制的理解。这套逻辑不仅适用于 VS Code 远程开发,对于 Git 代码提交、服务器自动化部署(CI/CD)等场景同样适用。磨刀不误砍柴工,花十分钟配置好,以后每天都能省下几十次输密码的烦躁,非常划算。