在管理 Linux VPS 或远程服务器时,使用 SSH 密钥登录是一种比单纯依赖密码更值得推荐的认证方式。

本文记录如何通过 Termius 创建 SSH 密钥、将公钥添加到 Linux 服务器、配置并测试密钥登录,以及在确认可正常登录后关闭密码认证。此外,也会介绍如何通过 Identity 统一管理多台服务器的登录凭据。

一、准备工作

开始之前,请确认以下条件:

  • 已安装 Termius 客户端。
  • 拥有目标 Linux 服务器的 SSH 登录权限。
  • 当前仍能通过密码或其他可用方式登录服务器。
  • 拥有修改 SSH 配置和重启 SSH 服务的权限。

本文以 Debian / Ubuntu 系统为例,默认使用 root 用户演示。若使用普通用户,请将后续的 ~/.ssh 替换为对应用户的 SSH 目录。

注意:在完成密钥登录测试之前,不要关闭当前 SSH 会话,也不要提前禁用密码登录。 如果配置错误,可能导致自己无法再次登录服务器。

二、在 Termius 中创建 SSH 密钥

打开 Termius,按照以下步骤操作:

  1. 进入侧边栏的 Keychain。
  2. 点击 New Key。
  3. 选择 Generate Key。
  4. 在 Label 中填写密钥名称,例如 My-VPS-Key。
  5. 点击 Generate & Save,完成密钥创建。

创建完成后,Termius 中会保存对应的密钥信息。

SSH 密钥通常由以下两部分组成:

  • Private Key(私钥):用于客户端身份认证,应妥善保管,不要发送给他人,也不要上传到公开仓库。
  • Public Key(公钥):用于服务器验证客户端身份,需要将其添加到服务器的授权密钥文件中。

本文使用 Termius 生成密钥。如果你已经拥有一对 SSH 密钥,也可以直接使用现有密钥,无须重复创建。

三、将公钥添加到 Linux 服务器

1. 登录服务器并创建 SSH 目录

使用现有方式登录服务器,执行:

mkdir -p ~/.ssh
chmod 700 ~/.ssh

其中:

  • mkdir -p ~/.ssh:创建 SSH 配置目录,目录已存在时不会报错。
  • chmod 700 ~/.ssh:限制目录访问权限,仅当前用户可以访问。

2. 获取 Termius 公钥

在 Termius 中进入:

Keychain
  → 找到已创建的 Key
  → 查看 Public Key
  → 复制公钥内容

公钥通常以 ssh-ed25519 或 ssh-rsa 开头,例如:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIxxxxxxxxxxxxxxxxxxxxxxxxxxxx My-VPS-Key

以上内容仅为格式示例,请使用你自己的完整公钥。

3. 写入服务器授权文件

执行:

vim ~/.ssh/authorized_keys

将公钥完整粘贴到文件中,保存退出,然后设置权限:

chmod 600 ~/.ssh/authorized_keys

如果文件中已经存在其他公钥,请在新的一行追加,不要覆盖原有内容。

对于 root 用户,文件路径通常为:

/root/.ssh/authorized_keys

对于普通用户,则应写入该用户自己的 ~/.ssh/authorized_keys。

4. 检查文件权限和所有权

执行:

ls -ld ~/.ssh
ls -l ~/.ssh/authorized_keys

如果使用 root 用户操作,目录和文件通常应由 root 所有。如果发现所有权不正确,可执行:

chown -R root:root /root/.ssh
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys

注意: 上述 chown 命令仅适用于 root 用户。使用普通用户时,应改为对应的用户名和用户组。

四、检查服务器 SSH 配置

编辑 SSH 服务端配置文件:

vim /etc/ssh/sshd_config

确认公钥认证已启用:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

如果配置项前面有 #,需要先确认实际生效的配置,再决定是否取消注释或修改。

原文中的密码认证和 root 登录配置,不建议直接作为所有服务器的通用配置。对于仍需密码登录的初始配置阶段,可以暂时保留现有设置;对于最终安全配置,应根据实际使用的登录账户决定是否允许 root 登录。

检查 SSH 配置是否正确

执行:

sshd -t

如果没有任何输出,通常表示配置文件语法检查通过。

还可以查看最终生效的配置:

sshd -T | grep -E '^(pubkeyauthentication|authorizedkeysfile|passwordauthentication|permitrootlogin) '

需要注意:如果系统使用了 Include 配置文件、Match 条件或其他覆盖规则,最终生效的配置可能与主配置文件中的单独一行不同。

如果修改了 SSH 配置,建议先保持当前会话不关闭,再重载服务:

systemctl reload ssh

如果系统不支持重载,再根据实际情况使用:

systemctl restart ssh

Debian / Ubuntu 通常使用 ssh 作为服务名称;其他发行版可能使用 sshd。

五、在 Termius 中测试密钥登录

完成公钥配置后,返回 Termius:

  1. 进入侧边栏的 Hosts。
  2. 找到需要连接的服务器。
  3. 编辑服务器配置。
  4. 在 Credentials 中选择对应的 Key 或身份凭据。
  5. 确认用户名、服务器地址和 SSH 端口正确。
  6. 保存后重新连接服务器。

如果能够正常登录,说明密钥认证基本配置成功。

建议再新建一个独立连接进行验证,并确认登录使用的是预期的服务器账户。

在验证成功之前,请保留原有 SSH 会话和可用的备用登录方式。

如果无法登录,可以优先检查:

  • 公钥是否完整写入 authorized_keys。
  • 是否将公钥写入了正确用户的目录。
  • .ssh 目录和 authorized_keys 文件的权限、所有权是否正确。
  • Termius 是否选择了正确的私钥。
  • 服务器的 SSH 端口、防火墙和安全组规则是否正确。
  • SSH 服务日志是否存在认证失败记录。

Debian / Ubuntu 可以通过以下命令查看日志:

journalctl -u ssh -n 100 --no-pager

六、通过 Identity 统一管理多台服务器

如果需要管理多台服务器,可以使用 Termius 的 Identity 功能,减少重复配置登录凭据的工作。

在 Termius 中进入:

Keychain
  → New Key
  → New Identity

根据客户端版本,实际菜单名称可能略有差异。创建 Identity 时:

  1. 在 Label 中填写身份名称,例如 Root-Servers。
  2. 在 Username 中填写登录用户名,例如 root。
  3. 根据服务器的认证方式,选择对应的 Key。
  4. 如果使用纯密钥认证,不需要额外填写密码。
  5. 保存 Identity。

然后进入 Hosts,编辑目标服务器,在 Credentials 中选择刚刚创建的 Identity。

这样,多台服务器可以复用同一套客户端身份配置,不必逐台重复填写凭据。

需要注意,统一管理不等于所有服务器都必须共用同一把密钥。如果服务器之间的安全边界不同,建议按用途或安全等级划分密钥,降低单把私钥泄露后的影响范围。

七、确认密钥登录成功后,关闭密码认证

如果希望进一步提高安全性,可以在确认密钥登录正常后,关闭 SSH 密码认证。

再次编辑:

vim /etc/ssh/sshd_config

根据服务器的登录策略设置以下配置:

PubkeyAuthentication yes
PasswordAuthentication no

如果服务器只允许通过密钥登录 root,还可以考虑:

PermitRootLogin prohibit-password

其中:

  • PubkeyAuthentication yes:启用公钥认证。
  • PasswordAuthentication no:关闭 SSH 密码认证。
  • PermitRootLogin prohibit-password:允许 root 使用公钥等非密码方式认证,但禁止 root 通过密码认证。

这里需要特别注意:PasswordAuthentication no 并不等同于禁用所有其他认证方式,例如 PAM 交互认证等仍可能受其他配置影响。若需要严格限制登录方式,应结合服务器的实际认证配置检查。

应用配置前的安全检查

先检查语法:

sshd -t

确认没有错误后,再重载 SSH:

systemctl reload ssh

随后,保持原来的 SSH 会话不关闭,使用一个新的 Termius 连接测试密钥登录。

只有在新连接确认成功后,才建议结束原有会话。

如果新连接失败,应通过仍然可用的原有会话修复配置。若原有会话也已断开,则可能需要使用服务商提供的 Web 控制台、VNC 或救援模式恢复。

八、常用检查命令

目的命令
检查 SSH 配置语法sshd -t
查看 SSH 服务状态systemctl status ssh
查看 SSH 服务日志journalctl -u ssh -n 100 --no-pager
查看 SSH 目录权限ls -ld ~/.ssh
查看授权公钥文件权限ls -l ~/.ssh/authorized_keys
查看实际生效的认证配置sshd -T

九、总结

通过以上步骤,即可完成 Termius 密钥创建、Linux 服务器公钥授权、SSH 配置检查和密钥登录验证。

对于长期运行的 VPS,建议至少做到以下几点:

  • 妥善保存私钥,避免泄露。
  • 使用正确的文件权限和所有权。
  • 关闭不必要的密码认证。
  • 在修改 SSH 配置前检查语法。
  • 修改认证策略后使用新连接验证,避免锁定自己。
  • 为不同安全等级的服务器合理划分密钥。

SSH 密钥登录只是服务器安全的基础措施之一,还应结合防火墙、安全组、系统更新、账户权限和日志审计共同使用。


完结,撒花。