如何设置 Linux ssh 服务器以使用多个 ssh 密钥进行身份验证?

如何设置 Linux ssh 服务器以使用多个 ssh 密钥进行身份验证?

我们使用的是 Amazon EC2 服务器,默认情况下,该服务器使用 ssh 密钥进行身份验证。我们想授予服务器中的另一个用户访问权限,但不想泄露我们的初始密钥,因此我们想创建第二个密钥,稍后再删除。有没有办法接受多个密钥?

这篇文章对于设置非常有帮助第一把钥匙

答案1

您可以为每个用户帐户配置多个授权密钥。只需以相同的方式创建公钥/私钥对,最后运行以下命令:

cat id_rsa.pub >> ~/.ssh/authorized_keys

其中 id_rsa.pub 是新密钥创建的文件名。现在,如果您查看 authorized_keys 文件,您将看到列出的两个公钥,每行一个。

需要明确的是,这将允许使用两个密钥登录相同的用户帐户。如果您只是希望此人具有系统的可审计访问权限,我建议创建一个新用户。但仍然使用公钥进行访问。

答案2

使用 puttygen 生成密钥。我个人使用 RSA、SSHv2 密钥 @ >2048 位,但您可以自行选择。

接下来,在 puttygen 中找到允许您导出 OpenSSH 公钥和私钥对的函数。获取公钥并将其附加到服务器上 ~/.ssh/authorized_keys 的末尾,确保删除之前附加的任何非 OpenSSH 格式的密钥(即您在之前的评论中提到的 Putty 密钥)。

对您想要登录到服务器的不同密钥多次执行此操作。本地计算机上的 Pagent 保存有私钥,但它可能想要读取 .PPK 文件,而不是您导出的私钥文件。

请注意,一旦任一用户登录,他们就可以更改 authorized_keys 文件并锁定另一个用户。换句话说,这是不是一个以安全为中心的设置,你没有多少办法来实现它。你唯一的选择是限制用户可以运行的命令,不给他们 shell(“man authorized_keys”并搜索关于“command=”和“no-pty”的部分),或者要求服务器的系统管理员重新定位 authorized_keys 的位置(/etc/ssh/sshd_config 中的 AuthorizedKeysFile 设置)。

如果做不到这一点,请为这两个用户提供单独的登录名,并充分利用服务器的用户/组文件所有权 ACL。说实话,这可能是最好的选择...

相关内容