要使用 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 服务器上的项目和文件。这样不仅提升了安全性,还简化了连接流程,提高了工作效率。

如果在过程中遇到任何问题,请根据报错信息进行针对性排查,确保每一步都正确完成。

祝您配置顺利!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。