网站
向网站添加SSH密钥
SSH access to a Kapsule site is key-based only, so before you can open a shell or an SFTP session you need to register a public key against the site in KPanel. This guide covers where that lives…
SSH 密钥访问网站
SSH 访问 Kapsule 网站只能通过密钥进行,因此在打开 shell 或 SFTP 会话之前,您需要在 KPanel 中针对该网站注册一个公钥。本指南涵盖该功能的位置、如何添加您已有的密钥、如何让 Kapsule 为您生成密钥,以及如何撤销您不再信任的密钥。
SSH 密钥页面的位置
打开网站,点击该网站,然后在网站标签栏中打开文件菜单并选择 SSH 密钥。该页面标题为 SSH 访问,包含两项内容:该网站的连接详情,以及当前授权使用这些连接详情的公钥列表。
主侧边栏中没有顶级 SSH 项。密钥是按网站分配的,因此您在此处添加的密钥只对该网站进行身份验证。如果您运行多个网站,每个网站都需要有自己的条目,即使它是您笔记本电脑上的同一个密钥。

添加或撤销密钥需要 sites:write 权限。如果您使用的是团队帐户且拥有只读角色,则 添加密钥按钮和撤销图标将被隐藏。请要求帐户所有者或管理员进行更改。
连接详情
页面顶部的连接详情卡片显示客户端所需的全部内容:
| 字段 | 说明 |
|---|---|
| Host | 要连接的主机名 |
| Port | 该网站的 SSH 端口 |
| Username | 您的网站运行所在的系统用户 |
| SSH | 为该网站预先制作的 ssh 命令 |
| SFTP | 为该网站预先制作的 sftp 命令 |
每一行都有一个复制控件,SSH 和 SFTP 行复制整个命令而不仅仅是该值,因此您可以直接粘贴到终端中。使用这两个命令而不是自己输入命令:它们已经包含了正确的用户、主机和端口。
如果卡片根本不出现,该网站尚未完成其 shell 用户的配置。API 在这种情况下会返回一个简单的网站没有 SSH 用户错误。等待网站状态指示灯显示为活跃,然后重新加载。
添加您已有的密钥
大多数人的计算机上已经有一个密钥对。在此处添加公钥部分。
- 在您自己的计算机上,打印您的公钥。在 macOS 和 Linux 上,通常是
cat ~/.ssh/id_ed25519.pub,或针对较旧的 RSA 密钥是cat ~/.ssh/id_rsa.pub。在装有 OpenSSH 的 Windows 上是type %USERPROFILE%\.ssh\id_ed25519.pub。 - 复制整个单行,开头为
ssh-ed25519、ssh-rsa或ecdsa-sha2-nistp256。 - 在 KPanel 中,点击添加密钥。
- 在标签字段中输入一些易于记住的内容,例如密钥所在计算机的名称。
- 将公钥粘贴到第二个字段。
- 点击添加密钥。
该密钥立即出现在已授权密钥列表中,标签下方显示其指纹。您可以立即连接。
Kapsule 还会在每次添加密钥时向帐户地址发送电子邮件,引用标签、指纹和网站。这样的邮件是有意的:SSH 访问具有高度信任度,因此如果出现您未添加的密钥,请立即撤销它并更改您的密码。
仅粘贴 .pub 文件。私钥文件没有 .pub 扩展名,并以诸如 -----BEGIN OPENSSH PRIVATE KEY----- 的行开头。如果您粘贴了该文件,它就是您的私钥,必须重新生成而不能重复使用。
如果您还没有密钥
使用 ssh-keygen -t ed25519 -C "your-label" 在本地生成一个,接受默认文件位置,并在提示时设置密码。这会生成 ~/.ssh/id_ed25519(保持其私密)和 ~/.ssh/id_ed25519.pub(粘贴这个)。
让 Kapsule 生成密钥对
如果您不想运行 ssh-keygen,KPanel 可以为您生成这个密钥对。
- 点击添加密钥。
- 填写标签字段。将公钥框留空。
- 点击生成密钥对。
Kapsule 创建一个 Ed25519 密钥对,将公钥安装到该网站,并显示一个绿色横幅:密钥对已生成:立即下载私钥。点击下载 .pem 保存私钥。该文件以您选择的标签命名。
私钥只显示一次。横幅清楚地说明:这是您唯一一次可以下载它的机会。Kapsule 不会保留您稍后可以获取的副本。如果您在不下载的情况下关闭横幅,请撤销该密钥并生成一个新密钥对。
生成的密钥没有密码短语,这使其可以从脚本中使用而不会提示。这也意味着该文件本身就是完整的凭证。如果您想要密码短语,请改为使用 ssh-keygen 自己生成该密钥对并粘贴公钥部分。
下载后,将文件移动到合适的位置并加强其权限,因为 SSH 拒绝使用全局可读的私钥:
mv ~/Downloads/my-laptop_id_ed25519.pem ~/.ssh/kapsule-mysite.pem
chmod 600 ~/.ssh/kapsule-mysite.pem
ssh -i ~/.ssh/kapsule-mysite.pem <username>@<host> -p <port>
从连接详情卡片中替换用户名、主机和端口。
读取已授权密钥列表
已授权密钥中的每一行显示:
- 您为该密钥设置的标签。
- 密钥指纹,当标签相似时,这是区分两个密钥的方式。
- 添加于以及注册日期。
- 最后使用于以及最近一次身份验证的日期,或如果尚未进行身份验证则显示从未使用。
最后使用于列在清理过程中很有用。从未被使用过的密钥,或者几个月未被使用的密钥,通常属于已被替换的笔记本电脑或已离职的承包商。
撤销密钥
点击该密钥行上的红色垃圾桶图标。KPanel 要求您使用撤销 SSH 密钥?和一条注明该密钥将不再对该网站进行身份验证的注释来确认。点击撤销完成操作。
撤销对新连接立即生效。已打开的 SSH 会话不会因为撤销密钥而被杀死,因此如果您要从仍可能连接的人那里移除访问权限,请撤销该密钥,然后更改他们可能已获取的任何内容:数据库密码、应用程序机密以及存储在网站上的任何令牌。
保持密钥列表简短。每台计算机一个密钥,标有计算机名称,比起一堆名为"key1"、"new key"和"temp"的密钥要容易审计得多。
故障排除
权限被拒绝 (publickey)。最常见的原因是您的客户端提供了与您注册的不同的密钥。使用 ssh -i /path/to/private_key ... 强制使用正确的密钥,或使用 ssh -v 检查提供了哪些密钥。
连接被拒绝或超时。确认您使用的是连接详情中显示的端口,而不是默认的 22 端口。从页面复制 SSH 命令,而不是输入它。
私钥权限错误。OpenSSH 拒绝其他用户可以读取的私钥。在该文件上运行 chmod 600。
该密钥适用于 SSH 但不适用于 SFTP。它们共享相同的凭证,所以这几乎总是客户端问题而不是密钥问题。使用从页面复制的 SFTP 命令,它已经包含了正确的端口。
下一步
- 使用 SFTP 上传文件涵盖相同凭证的文件传输方面。
- 通过 SSH 隧道连接到您的数据库使用您刚刚添加的密钥从桌面客户端访问 MySQL。
- 网站活动日志记录您添加的每个密钥,因此您可以稍后检查谁添加了什么以及何时添加。