如何在 DirectAdmin 中使用 SSH密钥

SSH(Secure Shell)密钥认证是通过命令行连接服务器最安全、最便捷的方式。您无需每次连接时输入密码,SSH 客户端会使用密码学密钥对自动完成认证——整个过程不会在网络上传输任何密码。DirectAdmin 支持 SSH密钥 管理,您可以直接在控制面板中添加和管理公钥。

什么是 SSH密钥?

SSH密钥 以配对方式工作:私钥保存在您的本地计算机上,公钥上传至服务器。连接时,服务器验证您是否持有与已保存公钥匹配的私钥。匹配成功即可登录,无需输入密码。私钥始终不会离开您的设备,因此这种方式天然免疫密码嗅探和暴力破解攻击。

公钥与私钥的区别

在 Mac 和 Linux 上生成 SSH密钥

Mac 和 Linux 内置 OpenSSH。打开终端并运行:

ssh-keygen -t ed25519 -C "[email protected]"

系统会提示您选择保存位置(按 Enter 接受默认路径 ~/.ssh/id_ed25519)以及可选的密码短语。命令执行后会生成两个文件:id_ed25519(私钥)和 id_ed25519.pub(公钥)。公钥是您需要上传到服务器的文件。

如果需要使用兼容性更好的旧版 RSA 格式:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

在 Windows 上生成 SSH密钥

Windows 10 和 Windows 11 已内置 OpenSSH,您可以在命令提示符或 PowerShell 中使用相同的 ssh-keygen 命令。也可以使用随 PuTTY 附带的密钥生成工具 PuTTYgen:

  1. 下载并打开 PuTTYgen。
  2. 选择 EdDSA 或 RSA 作为密钥类型。
  3. 点击 Generate(生成),并在空白区域移动鼠标以产生随机数据。
  4. 为密钥设置可选的密码短语。
  5. 点击 Save private key(保存私钥),将 .ppk 文件保存到您的计算机。
  6. 从 PuTTYgen 窗口顶部复制公钥文本——这就是您上传到 DirectAdmin 的内容。

将公钥添加到 DirectAdmin

  1. 登录 DirectAdmin,进入 Advanced Features(高级功能)。
  2. 点击 SSH Keys(SSH密钥)。
  3. 点击 Add SSH Key(添加 SSH密钥)。
  4. 将公钥内容粘贴到文本框中。公钥以 ssh-ed25519、ssh-rsa 等开头。
  5. 点击 Add Key(添加密钥)。DirectAdmin 会将该密钥添加到您账户的 authorized_keys 文件中。

测试 SSH 连接

添加公钥后,在终端中测试连接:

ssh [email protected]

将 username 替换为您的主机用户名,将 yourdomain.com 替换为服务器的主机名或 IP 地址。如果密钥配置正确,您将直接登录,无需输入密码。如果您为私钥设置了密码短语,系统会提示输入密码短语(而非服务器密码)。

删除不再使用的密钥

请定期检查 DirectAdmin 中存储的 SSH密钥,删除不再需要的密钥——例如旧计算机、离职员工或已停用系统的密钥。进入 DirectAdmin 的 SSH Keys(SSH密钥),在列表中找到目标密钥,点击 Delete(删除)。移除无用密钥可有效缩小攻击面。

管理多台服务器的多个 SSH密钥

当您管理多台服务器时,最佳做法是为每台服务器或每个账户生成独立的 SSH密钥 对。这样即使某个密钥泄露,也只需吊销并更换该密钥,不会影响其他服务器的访问权限。

生成指定名称的密钥对

在 ssh-keygen 中使用 -f 参数为密钥对指定自定义文件名:

ssh-keygen -t ed25519 -f ~/.ssh/id_asiagb -C "asiagb-hosting"

此命令会创建 ~/.ssh/id_asiagb(私钥)和 ~/.ssh/id_asiagb.pub(公钥)。-C 后的注释可帮助您在 DirectAdmin 列表中区分各个密钥。

配置 ~/.ssh/config

为避免每次连接时手动指定密钥文件,可在本地计算机上创建或编辑 ~/.ssh/config 文件,为每台服务器添加 Host 条目:

Host myhosting
  HostName yourdomain.com
  User yourusername
  IdentityFile ~/.ssh/id_asiagb

配置完成后,只需执行 ssh myhosting,SSH 客户端即会自动使用正确的私钥。您可以根据需要添加任意数量的 Host 条目,每台服务器或账户一个。

保持密钥有序管理

使用有描述性的文件名和注释,方便将每个私钥与对应的服务器对应起来:如 id_vps_singapore、id_hosting_th 等。随时运行 ssh-add -l 可查看当前 SSH 代理中已加载的密钥。

排查 SSH密钥 认证问题

使用 SSH密钥 时最常见的错误是 Permission denied (publickey)。本节将逐一介绍常见原因及解决方法。

密钥文件或路径错误

当您拥有多个密钥时,SSH 客户端可能选用了错误的密钥。使用 -i 参数明确指定密钥:

ssh -i ~/.ssh/id_asiagb [email protected]

如果这样可以连接但默认连接不行,请按上一节所示在 ~/.ssh/config 中为该主机添加正确的 IdentityFile 配置。

公钥不匹配

如果您重新生成了密钥对但未更新服务器上的公钥,服务器会因密钥不匹配而拒绝认证。请在文本编辑器中打开您的 .pub 文件,与 DirectAdmin SSH密钥 列表中显示的公钥进行对比——两者必须完全一致。若不同,请在 DirectAdmin 中删除旧密钥并添加新公钥。

服务器文件权限不正确

OpenSSH 对 ~/.ssh 目录和 authorized_keys 文件的权限有严格要求。如果权限设置过于宽松,SSH 会出于安全考虑静默拒绝使用密钥。正确的权限设置如下:

通过 DirectAdmin 面板添加密钥时,系统通常会自动设置正确权限。如果您通过 FTP 或文件管理器手动编辑过该文件,请务必重新确认权限。

在 OpenSSH 中使用 PuTTY 私钥格式(.ppk)

PuTTYgen 将私钥保存为其专属的 .ppk 格式,该格式与 OpenSSH 不兼容。如果您使用命令行 SSH 客户端(Mac、Linux 或 Windows PowerShell),而私钥是 .ppk 文件,则需要:(1)直接使用 PuTTY 进行连接,因为它原生支持 .ppk 格式;或(2)通过 PuTTYgen 的 Conversions 菜单中的 Export OpenSSH key(导出 OpenSSH 密钥)选项将私钥转换为 OpenSSH 格式。无论使用哪种方式,上传到 DirectAdmin 的公钥格式都相同——复制 PuTTYgen 窗口中显示的文本即可。

使用详细输出进行诊断

在 SSH 命令中添加一个或多个 -v 参数以启用详细调试输出:

ssh -vv [email protected]

重点关注包含 Offering public key、Server accepts key 或 Authentications that can continue: publickey 的行。这些信息可告知您服务器是否收到了您的密钥、是否与 authorized_keys 中的条目匹配,以及握手过程中失败的具体位置。

切勿共享您的私钥:您的 SSH 私钥相当于服务器的万能钥匙。切勿通过电子邮件发送、粘贴到聊天工具、上传到任何服务器或存储在共享位置。如果您认为私钥已泄露,请立即从所有服务器删除对应的公钥并重新生成新的密钥对。务必为私钥设置密码短语——即使有人获取了密钥文件,没有密码短语也无法使用。

支持 SSH密钥 认证的 Linux VPS

AsiaGB VPS 方案从第一天起即提供完整的 SSH 访问权限,原生支持密钥认证——安全、高效,完全可定制。

查看 VPS 方案