# 使用SSH连接到您的云服务器

Source: https://support.kapsulehost.com/zh-cn/cloud-servers-ssh-connect

SSH 为您提供从自己的终端访问云服务器的 root shell，您需要的每个连接细节都显示在 KPanel 中的服务器页面上，随时可以复制。

云服务器完全属于您，从操作系统开始，这意味着大多数工作发生在命令行上。本指南涵盖查找连接详情、使用密钥或密码连接、正确设置密钥、浏览器控制台备选方案，以及导致几乎所有连接失败的常见错误。

## 查找连接详情

1. 登录 [KPanel](https://kpanel.kapsulehost.com)。
2. 单击左侧边栏中的**云服务器**，然后单击您的服务器。
3. 找到**连接**卡片。

该卡片包含三个复制到剪贴板的字段:

| 字段 | 描述 |
|---|---|
| **SSH 命令** | 一个完整的命令，随时可以粘贴到您的终端中 |
| **IPv4 地址** | 服务器的公共 IPv4 地址 |
| **IPv6 地址** | 服务器的 IPv6 地址，分配后显示 |

![KPanel 中云服务器的连接卡片](https://support.kapsulehost.com/help/screenshots/cloud-servers-ssh-connect.902ba66d.webp)

> **Note:** 如果卡片显示"IP 地址将在配置完成后显示在此处"，则服务器仍在构建中。配置云服务器大约需要 60 秒，完成后页面会自动更新。

## 使用 SSH 密钥连接

如果您在订购服务器时在**SSH 公钥**字段中粘贴了公钥，密钥身份验证已配置，无需输入密码。

1. 从连接卡片复制 **SSH 命令**。
2. 将其粘贴到您的终端并按 Enter。

```
ssh root@203.0.113.1
```

您的 SSH 客户端会找到匹配的私钥并自动进行身份验证。如果您的密钥位于非标准位置，请明确指向它:

```
ssh -i ~/.ssh/my-kapsule-key root@203.0.113.1
```

> **Tip:** 密钥既比密码更容易，也更安全。没有任何东西需要记住，没有任何东西需要输入到钓鱼提示中，自动密码猜测攻击也无法找到任何东西。如果您仍在使用密码，生成密钥并将其添加大约需要两分钟。

### 首次设置密钥

在您自己的机器上生成密钥对，而不是在服务器上:

```
ssh-keygen -t ed25519 -C "your-email@example.com"
```

按 Enter 以接受默认位置，并在提示时设置通行短语。您现在有两个文件:

- `~/.ssh/id_ed25519` 是您的**私钥**。它永远不会离开您的机器，您永远不会将其粘贴到任何地方。
- `~/.ssh/id_ed25519.pub` 是您的**公钥**。这是您提供给服务器的密钥。

打印公钥并复制整个单行，包括 `ssh-ed25519` 前缀和末尾注释:

```
cat ~/.ssh/id_ed25519.pub
```

订购服务器时，将该行粘贴到**SSH 公钥**字段中。该字段的提示已明确说明: "粘贴您的公钥以启用基于密钥的身份验证。如果留空，将向您发送一个 root 密码。"

> **Warning:** 永远不要粘贴没有 `.pub` 结尾的文件内容。那是您的私钥，拥有它的任何人都可以在信任它的每台服务器上以您的身份登录。如果您曾经意外共享过私钥，请立即生成新对并替换所有地方的公钥。

要将密钥添加到您已有的服务器，请使用当前的任何方式连接，并将公钥行追加到 `/root/.ssh/authorized_keys`。

## 使用密码连接

如果您在订购时将**SSH 公钥**字段留空，则在服务器配置后会向您发送一个 root 密码。

1. 从连接卡片复制 **SSH 命令**。
2. 将其粘贴到您的终端并按 Enter。
3. 在提示处输入发送的 root 密码。

进入后立即使用 `passwd` 更改该密码，并在此期间添加 SSH 密钥。发送的密码传输的距离超过了凭证应该传输的距离。

## 浏览器控制台

**浏览器控制台**在 KPanel 内提供一个终端，无需 SSH 客户端，无需通过端口 22。这是当您自己的访问出现问题时的工具。

1. 打开服务器页面，单击操作按钮中的**浏览器控制台**，或转到 `/cloud-servers/<server-id>/console`。
2. 单击**启动控制台**。KPanel 在服务器后面使用一次性凭证通过 HTTPS 启动终端。
3. **用户名**和**密码**显示在页面上，有一个**复制凭证**按钮。终端在页面内打开，您的浏览器可能会提示您输入这些凭证。
4. 像在任何 shell 中一样工作。

> **Note:** 控制台会话在 30 分钟后自动停止。启动新会话会颁发新凭证，因此完成后没有任何东西继续监听。浏览器控制台还需要在服务器上配置带 HTTPS 的域，这意味着通过面板安装的应用。在裸服务器上，控制台会告诉您这一点，而不是无声失败。

使用控制台撤销将您锁定的防火墙规则，重置密码或修复 `sshd` 配置。一旦您通过 SSH 正常返回，就不需要再次使用它了。

## 保持 SSH 访问安全

端口 22 始终在 KapsuleHost 服务器防火墙上开放，这是设计特意为之，因此防火墙更改永远无法将您完全锁定在机器之外。

这意味着您的 shell 安全取决于您如何进行身份验证，而不是隐藏端口。两件事做了大部分工作:

- **使用密钥，而不是密码。** 这样猜测的密码就不是进入的方式。
- **保持 fail2ban 开启。** 它默认启用，并禁止重复失败 SSH 身份验证的地址。您可以在服务器的**管理**页面上看到该开关。

[云服务器防火墙和安全管理](https://support.kapsulehost.com/zh-cn/cloud-servers-firewall) 涵盖两者，以及您自己的应用程序需要的端口的自定义规则。

## 故障排除

**"连接被拒绝。"** 没有任何东西在监听。检查服务器在 KPanel 中是否显示**运行中**，如果关闭则打开它，并使用浏览器控制台检查 `sshd` 是否正在运行。

**"连接超时。"** 流量未到达。确认您使用的是连接卡片中的 IPv4 地址，并检查您自己的网络是否阻止出站端口 22。公司或校园网络有时会这样做。

**"权限被拒绝（publickey）。"** 服务器不认识您的密钥。确认您粘贴了完整未更改的 `.pub` 行，并且您的客户端提供了匹配的私钥。将 `-v` 添加到 ssh 命令以查看它尝试过的密钥。

**密码时"权限被拒绝，请重试"。** 密码错误，或因为您提供了密钥而禁用了密码身份验证。使用密钥或浏览器控制台。

**"远程主机识别已更改。"** 服务器的主机密钥与您的客户端记住的不同。这在 [重建](https://support.kapsulehost.com/zh-cn/cloud-servers-rebuild) 后是预期的，因为操作系统被重新安装了。从 `known_hosts` 文件中移除该 IP 地址的过时条目并重新连接。如果您没有重建任何东西，请在连接之前停止并与我们联系。

**我使用防火墙规则将自己锁定了。** 端口 22 保持开放，所以这不寻常，但如果服务器内的规则阻止了您，请使用浏览器控制台将其删除。

如果以上都无法让您获得 shell，请通过电子邮件向 [support@kapsulehost.com](mailto:support@kapsulehost.com) 发送服务器名称、您连接的地址和确切的错误文本。
