网站

向网站添加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 项。密钥是按网站分配的,因此您在此处添加的密钥只对该网站进行身份验证。如果您运行多个网站,每个网站都需要有自己的条目,即使它是您笔记本电脑上的同一个密钥。

KPanel 中网站的 SSH 访问页面

添加或撤销密钥需要 sites:write 权限。如果您使用的是团队帐户且拥有只读角色,则 添加密钥按钮和撤销图标将被隐藏。请要求帐户所有者或管理员进行更改。

连接详情

页面顶部的连接详情卡片显示客户端所需的全部内容:

字段说明
Host要连接的主机名
Port该网站的 SSH 端口
Username您的网站运行所在的系统用户
SSH为该网站预先制作的 ssh 命令
SFTP为该网站预先制作的 sftp 命令

每一行都有一个复制控件,SSH 和 SFTP 行复制整个命令而不仅仅是该值,因此您可以直接粘贴到终端中。使用这两个命令而不是自己输入命令:它们已经包含了正确的用户、主机和端口。

如果卡片根本不出现,该网站尚未完成其 shell 用户的配置。API 在这种情况下会返回一个简单的网站没有 SSH 用户错误。等待网站状态指示灯显示为活跃,然后重新加载。

添加您已有的密钥

大多数人的计算机上已经有一个密钥对。在此处添加公钥部分。

  1. 在您自己的计算机上,打印您的公钥。在 macOS 和 Linux 上,通常是 cat ~/.ssh/id_ed25519.pub,或针对较旧的 RSA 密钥是 cat ~/.ssh/id_rsa.pub。在装有 OpenSSH 的 Windows 上是 type %USERPROFILE%\.ssh\id_ed25519.pub
  2. 复制整个单行,开头为 ssh-ed25519ssh-rsaecdsa-sha2-nistp256
  3. 在 KPanel 中,点击添加密钥
  4. 标签字段中输入一些易于记住的内容,例如密钥所在计算机的名称。
  5. 将公钥粘贴到第二个字段。
  6. 点击添加密钥

该密钥立即出现在已授权密钥列表中,标签下方显示其指纹。您可以立即连接。

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 可以为您生成这个密钥对。

  1. 点击添加密钥
  2. 填写标签字段。将公钥框留空。
  3. 点击生成密钥对

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 命令,它已经包含了正确的端口。

下一步

仍需帮助?

请发送邮件至 support@kapsulehost.com 或在 KPanel 中打开聊天。

打开 KPanel
向网站添加SSH密钥