要使用 VSCode 的 **Remote - SSH** 扩展实现免密登录到运行 **宝塔面板** 的 CentOS 7.9 服务器,可以按照以下步骤操作。这些步骤涵盖了生成 SSH 密钥对、在服务器上配置公钥、验证连接以及在 VSCode 中进行相应配置。
## 1. 前提条件
- **本地计算机**:已安装 [Visual Studio Code](https://code.visualstudio.com/)。
- **Remote - SSH 扩展**:在 VSCode 中安装 [Remote - SSH](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh) 扩展。
- **SSH 客户端**:本地计算机已安装 SSH 客户端(大多数 Linux 和 macOS 系统默认安装,Windows 10/11 也内置了 OpenSSH 客户端)。
## 2. 生成 SSH 密钥对
### Windows 用户
1. **使用 PowerShell 或 Git Bash** 打开终端。
### macOS/Linux 用户
1. **打开终端**。
2. **生成 SSH 密钥对**:
执行以下命令生成新的 SSH 密钥对。如果已经有现有的密钥对,可以跳过此步骤或选择为新密钥指定不同的名称。
```bash
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
```
- **提示**:按 `Enter` 键接受默认路径 (`~/.ssh/id_rsa`)。
- **密码短语**:可以选择设置,也可以直接按 `Enter` 跳过(设置密码短语会增加安全性,但每次连接时需要输入)。
## 3. 将公钥复制到服务器
有两种常用方法将公钥复制到 CentOS 服务器。
### 方法 1:使用 `ssh-copy-id` (推荐)
**注意**:CentOS 7.9 默认可能没有安装 `ssh-copy-id` 工具。如果没有,可以选择方法 2。
1. **执行命令**:
```bash
ssh-copy-id username@server_ip
```
- 替换 `username` 为远程服务器的用户名(例如 `root`)。
- 替换 `server_ip` 为服务器的 IP 地址。
2. **输入密码**:请输入远程用户的密码,公钥将被添加到服务器的 `~/.ssh/authorized_keys` 文件中。
### 方法 2:手动复制
1. **显示本地公钥内容**:
```bash
cat ~/.ssh/id_rsa.pub
```
复制输出的公钥内容。
2. **登录到服务器**:
```bash
ssh username@server_ip
```
3. **在服务器上创建 `.ssh` 目录(如果不存在)**:
```bash
mkdir -p ~/.ssh
chmod 700 ~/.ssh
```
4. **将公钥添加到 `authorized_keys`**:
```bash
echo "你的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
```
举例:
```bash
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC..." >> ~/.ssh/authorized_keys
```
## 4. 配置 SSH 服务
确保服务器的 SSH 配置允许使用密钥认证。
1. **编辑 SSH 配置文件**:
```bash
sudo vi /etc/ssh/sshd_config
```
2. **确保以下配置项启用**:
```text
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes # 可选,如果希望保留密码登录
```
**建议**:为了更高的安全性,可以最终将 `PasswordAuthentication` 设置为 `no`,但在完全确认公钥登录正常后再执行。
3. **重启 SSH 服务**:
```bash
sudo systemctl restart sshd
```
## 5. 测试 SSH 密钥登录
在本地终端中尝试通过 SSH 登录,以确保免密登录配置成功。
```bash
ssh username@server_ip
```
**预期结果**:无需输入密码即可登录到服务器。如果仍提示输入密码,请检查前面的步骤是否正确完成。
## 6. 在 VSCode 中配置 Remote - SSH
1. **打开 VSCode**。
2. **安装 Remote - SSH 扩展**:
- 点击左侧活动栏的扩展图标(四个方块)。
- 搜索 "Remote - SSH" 并安装。
3. **配置 SSH 目标**:
- 按下 `F1`(或 `Ctrl+Shift+P` / `Cmd+Shift+P`)打开命令面板。
- 输入并选择 `Remote-SSH: Open SSH Configuration File...`。
- 选择要编辑的 SSH 配置文件(通常是 `~/.ssh/config`,Windows 上可能是 `C:\Users\你的用户名\.ssh\config`)。
4. **添加服务器配置**:
在 SSH 配置文件中添加以下内容:
```text
Host my_baota_server
HostName server_ip
User username
IdentityFile ~/.ssh/id_rsa
```
- `Host`: 自定义的主机别名,可以任意命名(如 `my_baota_server`)。
- `HostName`: 服务器的 IP 地址或域名。
- `User`: 远程服务器的用户名(例如 `root`)。
- `IdentityFile`: 本地私钥文件路径(默认是 `~/.ssh/id_rsa`,Windows 上可能是 `C:\Users\你的用户名\.ssh\id_rsa`)。
**示例**:
```text
Host baota
HostName 192.168.1.100
User root
IdentityFile ~/.ssh/id_rsa
```
5. **保存配置文件**。
6. **连接到服务器**:
- 按下 `F1`(或 `Ctrl+Shift+P` / `Cmd+Shift+P`)打开命令面板。
- 输入并选择 `Remote-SSH: Connect to Host...`,然后选择刚刚配置的 `my_baota_server`(如 `baota`)。
- VSCode 会尝试通过 SSH 连接到服务器,并在成功后打开远程工作区。
## 7. 常见问题及解决方法
### 权限问题
确保本地的 SSH 密钥文件权限正确:
```bash
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 600 ~/.ssh/authorized_keys
```
### SELinux 设置
CentOS 默认启用 SELinux,可能会影响 SSH 连接。可以暂时禁用 SELinux 以测试:
```bash
sudo setenforce 0
```
如果确实是 SELinux 导致的问题,可以调整策略或永久禁用(不推荐,除非你了解相关风险):
编辑配置文件 `/etc/selinux/config`,将 `SELINUX=enforcing` 改为 `SELINUX=permissive`,然后重启服务器。
### 防火墙设置
确保防火墙允许 SSH 连接(默认端口是 22):
```bash
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
```
### 验证 SSH 配置
检查 SSH 配置文件是否有语法错误:
```bash
sudo sshd -t
```
若无输出,则配置语法正确。
### 使用详细模式调试
在本地使用详细模式连接以获取更多调试信息:
```bash
ssh -v username@server_ip
```
根据输出信息查找问题所在。
## 8. 完成连接
完成上述步骤后,您应该能够通过 VSCode 的 **Remote - SSH** 扩展无密码登录并管理您的 CentOS 7.9 服务器上的项目和文件。这样不仅提升了安全性,还简化了连接流程,提高了工作效率。
如果在过程中遇到任何问题,请根据报错信息进行针对性排查,确保每一步都正确完成。
祝您配置顺利!
评论(0)