SSH 密钥对于其所使用的服务是否必须是唯一的?

SSH 密钥对于其所使用的服务是否必须是唯一的?

我刚刚首次创建了一个虚拟服务器(或者,用 Digital Ocean 主机的语言来说,是一个“droplet”)。Digital Ocean 有一个关于 SSH 密钥的说明页面https://www.digitalocean.com/ssh_keys 告诉我们检查 SSH 密钥是否存在,然后给出生成新 SSH 密钥并添加它们的说明。就我而言,使用说明给出的命令,我发现我已经有 SSH 密钥(我猜是在注册 github 或 heroku 时生成的)

问题

1)我应该重用我已经拥有的 SSH 密钥还是生成新密钥(即,它们是否必须对于我使用它们的服务是唯一的)?

2) 说明(复制如下)讨论了将 SSH 密钥添加到 digital ocean,然后创建服务器。就我而言,我在添加 SSH 密钥之前创建了服务器。这会产生我应该注意的任何问题吗?我是否应该销毁服务器(尚未安装任何内容)并在适当的时候创建一个添加 SSH 密钥的新服务器?

指示

You can add SSH keys to DigitalOcean which can then be selected during the droplet create process to add the selected SSH keys under the root user.

When using SSH keys a root password will no longer be set as SSH keys will be used as the preferred method of access.

We do not manage the server after creation, so editing, adding, or removing SSH keys from the SSH interface will not affect any of the stored keys on droplets that you have created.

答案1

SSH 密钥不必是特定服务独有的。作为良好的一般做法,它们应具有独特的目的

例如,您个人可能拥有多个 SSH 密钥:
- 一个用于您的个人系统的密钥
- 一个用于您的工作系统的密钥
- 一个用于 github/rsync.net/etc 的密钥。

在工作中,你可能还拥有专用于特定程序的密钥(一个由 Puppet 使用,一个由备份软件使用,等等)

您应该考虑您的安全性和保密性需求,然后确定是否应该创建新密钥或使用现有密钥。


您粘贴的说明似乎表明,当您创建“droplet”时,Digital Ocean 会将指定的密钥添加到 root 的authorized_keys文件中。此后,他们不再管理该authorized_keys文件,因此如果您已经创建了服务器没有指定密钥(或者您想稍后添加/更改/删除密钥),您需要手动编辑 root 的authorized_keys文件以进行这些更改。
您无需为此销毁/重新创建服务器。

答案2

我对 DigitalOcean 一无所知。

您可以将同一个 ssh 密钥用于所有操作,但在某些情况下最好不要这样做。如果您使用 SSH 代理转发密钥,则存在这样的风险:只要您仍处于连接状态,您转发到的机器上具有 root 权限的人就可能能够使用您的密钥。他们可以使用这个密钥连接到其他什么地方取决于您在其他什么地方使用了同一个密钥。许多人会认为这种担忧过于偏执,但同样,有些情况需要非常小心(甚至是偏执)。您比我更了解其中的利害关系。

.ssh/authorized_keys请注意,如果将同一个密钥两次放入文件,有时可能会得到意外结果。请避免这种情况。

相关内容