前言
在开发过程中,我们经常需要远程连接服务器进行代码编辑和调试。VS Code的Remote-SSH插件让这一过程变得异常便捷。本文将详细介绍如何从零开始配置服务器用户,设置SSH密钥认证,最终实现VS Code的无缝远程连接。
一、服务器端用户配置
1. 创建开发用户组和用户
首先,我们需要在服务器上创建一个专门的开发用户。这里请将username替换成用户名:
1 | # 创建用户组 |
2. 授予sudo权限(可选)
如果用户需要管理员权限,可以将其添加到sudo组:
1 | # Ubuntu/Debian系统中 |
3. 查看系统用户组信息
了解系统中的用户组配置:
1 | # 查看所有组 |
二、Windows端SSH密钥生成(推荐ed25519格式)
为什么选择ed25519?
相比传统的RSA算法,ed25519具有以下优势:
- 更高的安全性:比2048位RSA更安全
- 更好的性能:验证速度更快
- 更短的密钥:公钥仅68字符左右,便于分享
- 现代标准:GitHub、GitLab等平台均推荐使用
在Windows上生成ed25519密钥
方法一:使用PowerShell(推荐)
-
打开PowerShell(普通权限即可)
-
执行密钥生成命令:
1
ssh-keygen -t ed25519 -C "your_email@example.com"
参数说明:
-t ed25519:指定密钥类型-C:添加注释(通常使用邮箱,便于识别)
-
设置保存路径:
1
2Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\你的用户名/.ssh/id_ed25519):直接回车接受默认路径
-
设置密码短语(可选但推荐):
1
2Enter passphrase (empty for no passphrase):
Enter same passphrase again:- 输入密码短语:每次使用密钥都需要验证
- 留空:直接使用,无需验证
-
生成成功:
1
2Your identification has been saved in C:\Users\你的用户名/.ssh/id_ed25519
Your public key has been saved in C:\Users\你的用户名/.ssh/id_ed25519.pub
查看生成的公钥
1 | # 方法1:使用type命令 |
公钥内容示例:
1 | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO8PzWqF/3mM8xL8ZkFqKzKzJmXvXvXvXvXvXvXvXvX your_email@example.com |
密钥文件说明
生成后,C:\Users\你的用户名\.ssh\目录下会出现两个文件:
| 文件 | 类型 | 安全性 | 用途 |
|---|---|---|---|
id_ed25519 |
私钥 | ⚠️ 绝密,不可分享 | 身份验证 |
id_ed25519.pub |
公钥 | ✅ 可以公开 | 添加到服务器 |
三、服务器端公钥配置
1. 登录服务器并创建SSH配置
使用VS Code并安装SSH插件,并使用密码登录服务器。
1 | # 使用密码登录服务器(初次配置) |
2. 配置authorized_keys
1 | # 创建.ssh目录(如果不存在) |
3. 添加公钥
在authorized_keys文件中,粘贴之前在Windows生成的公钥内容(id_ed25519.pub文件的内容)。
4. 设置文件权限
1 | chmod 600 ~/.ssh/authorized_keys |
四、VS Code SSH配置优化
1. 配置SSH Config文件
在Windows的C:\Users\你的用户名\.ssh\config文件中添加以下配置:
1 | Host my-dev-server |
配置参数说明:
Host:连接别名(自定义)HostName:服务器IP或域名User:登录用户名IdentityFile:指定私钥路径IdentitiesOnly:只使用指定的密钥ServerAliveInterval:每60秒发送心跳包Compression:启用压缩加速传输
2. VS Code Remote-SSH使用
- 安装Remote-SSH插件
- 按
F1打开命令面板 - 输入"Remote-SSH: Connect to Host"
- 选择配置的Host别名(如"my-dev-server")
- 如果设置了密码短语,VS Code会弹出输入框
五、故障排查
常见问题及解决方案
-
连接被拒绝
1
2
3
4
5# 检查SSH服务状态
sudo systemctl status sshd
# 检查防火墙设置
sudo ufw status -
权限错误
1
2
3# 修复权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys -
密钥被忽略
1
2# 查看SSH调试信息
ssh -v username@your_ip -
存在旧的密钥记录
打开命令提示符或PowerShell,执行:1
ssh-keygen -R your_ip
这条命令会从known_hosts文件中移除该IP的旧密钥记录。
然后重新连接VS Code,它会提示你确认新的密钥,输入yes即可。
六、安全建议
- 使用强密码短语保护私钥
- 定期更新服务器系统和SSH配置
- 禁用密码登录,仅使用密钥认证
- 限制sudo权限,遵循最小权限原则
- 定期审查authorized_keys文件中的公钥
注意:本文中的IP地址、用户名等敏感信息已做脱敏处理,实际使用时请替换为自己的配置信息。
说些什么吧!