在 VS Code 中配置 SSH 远程免密码连接,本质是通过 SSH 密钥对实现客户端与服务器的身份认证,无需输入密码。以下是详细步骤:
前提条件
本地电脑已安装 VS Code 和 Remote - SSH 扩展(在 VS Code 扩展商店搜索并安装)。
远程服务器已开启 SSH 服务(通常默认开启,可通过
systemctl status sshd检查)。本地电脑和远程服务器均支持
ssh-keygen和ssh-copy-id工具(Linux/macOS 自带,Windows 需通过 WSL 或 Git Bash 运行)。
步骤 1:生成 SSH 密钥对(本地操作)
打开本地终端(Linux/macOS 用自带终端,Windows 用 WSL 或 Git Bash)。
输入以下命令生成密钥对(一路回车,默认路径和空密码即可):
ssh-keygen -t ed25519 # 推荐使用 ed25519 算法,更安全
# 若服务器不支持 ed25519,可改用 rsa:ssh-keygen -t rsa -b 4096生成后,密钥对默认存放在:
Linux/macOS:
~/.ssh/id_ed25519(私钥)和~/.ssh/id_ed25519.pub(公钥)。Windows(WSL):
/home/用户名/.ssh/或C:\Users\用户名\.ssh\(取决于终端环境)。
步骤 2:将公钥上传到远程服务器
方法 1:使用 ssh-copy-id(推荐,简单快捷)
在本地终端执行:
ssh-copy-id 用户名@远程服务器IP # 例如:ssh-copy-id ubuntu@192.168.1.100首次连接需输入远程服务器的密码,验证通过后,公钥会自动添加到服务器的
~/.ssh/authorized_keys文件中。
方法 2:手动上传公钥(若 ssh-copy-id 不可用)
查看本地公钥内容:
cat ~/.ssh/id_ed25519.pub复制输出的完整公钥字符串(以 ssh-ed25519 开头,以本地用户名@主机名结尾)。
登录远程服务器(需输入密码):
ssh 用户名@远程服务器IP在远程服务器上,确保
.ssh目录和authorized_keys文件存在(无则创建):
# 确保目录权限正确
mkdir -p ~/.ssh && chmod 700 ~/.ssh
# 确保文件权限正确
touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys编辑
authorized_keys文件,将本地公钥粘贴进去并保存:
# 粘贴后按 Ctrl+O 保存,Ctrl+X 退出
nano ~/.ssh/authorized_keys退出远程服务器:
exit步骤 3:测试免密码 SSH 连接(本地终端)
在本地终端执行:
ssh 用户名@远程服务器IP若无需输入密码即可登录,说明密钥认证配置成功。
步骤 4:在 VS Code 中配置免密码连接
打开 VS Code,点击左侧菜单栏的 远程资源管理器(图标类似
<>)。在远程资源管理器的下拉菜单中选择 SSH Targets。
点击右上角的 设置图标(齿轮),选择 Open SSH Configuration File,打开本地的 SSH 配置文件(通常路径为
~/.ssh/config)。在配置文件中添加远程服务器信息(若已有则修改):
Host 服务器别名 # 自定义名称,如 myserver
HostName 远程服务器IP或域名 # 例如 192.168.1.100
User 远程服务器用户名 # 例如 ubuntu
IdentityFile ~/.ssh/id_ed25519 # 本地私钥路径(步骤1生成的)
Prot 1234 默认是22端口,如果不是,可以自定义保存配置文件。
此时在 VS Code 的 SSH Targets 列表中会出现配置的
服务器别名,右键选择 Connect to Host in Current Window,即可免密码连接远程服务器。
常见问题排查
权限问题:远程服务器的
~/.ssh目录权限必须为700,authorized_keys文件权限必须为600,否则密钥认证会失败。私钥路径错误:确保 VS Code 配置文件中
IdentityFile指向本地私钥的正确路径。服务器 SSH 配置:若仍需密码,检查服务器
/etc/ssh/sshd_config文件是否开启密钥认证:
PubkeyAuthentication yes # 确保为 yes
AuthorizedKeysFile .ssh/authorized_keys # 确保路径正确修改后重启 SSH 服务:sudo systemctl restart sshd。
完成以上步骤后,VS Code 即可通过 SSH 免密码连接远程服务器,提升开发效率。
评论区