为更多用户、root 和 sudo 用户提供私钥和公钥 SSH(VP)

为更多用户、root 和 sudo 用户提供私钥和公钥 SSH(VP)

我想问一下如何对 VPS 上的 root 用户和另一个用户(sudo 用户)使用相同的身份验证(私钥和公钥 SSH)。

或者,从安全性的角度来看,最好直接以 sudo 用户身份执行创建和加载密钥的过程(我使用 puttygen)?

然后禁用 root 登录,并且不对 root 应用密钥身份验证?这安全吗?

非常感谢你的帮助,我开始疯狂了。:(

答案1

这里有很多不同的(独立的)问题......

实际考虑

要对多个用户使用相同的密钥对,您只需将内容(部分或全部)复制~/.ssh/authorized_keys到另一个用户的${HOME}/.ssh/authorized_keys文件中即可。您需要确保.ssh目录和authorized_keys文件的权限足够严格,否则 SSH 服务器可能会出错并拒绝处理它。举个例子:只有当前用户需要访问这些文件,他们不需要能够写入或执行它们,因此文件的权限为 400,目录的权限为 500(它需要执行,以便您可以列出其内容)应该没问题。请参阅这里如果您不熟悉,请参阅有关权限掩码的信息。

安全注意事项

首先,完全禁用通过 SSH 进行的 root 登录并在机器上设置单独的(安全的)root 密码始终是一个好主意。sudo这与 sudoers 用户拥有安全密码的安全级别大致相同su;如果没有,则不是。

如果您发现自己经常需要 root 权限,则应研究如何向用户提供有针对性的特定权限,以满足您使用服务器的最常见用例。这将减少以 root 身份登录的需要,因为权限开放,因此以 root 身份登录的风险始终较高。

为了进一步强化你的 SSH 服务器,你应该:

  • 将其端口从默认的 22 更改为 5 位数字(小于 65536,因为端口号是 16 位值)
  • 禁用基于密码的 SSH 登录全部用户(不仅仅是 root)
  • 使用 2048 位或 4096 位私钥的强密钥对。始终使用 RSA,而不是 DSA 等较弱的算法。
  • 为所有 sudoers 以及 root 设置强密码。

如果禁用 root 登录,是否重复使用同一密钥对的问题就消失了。如果您需要多个常规用户,并且您是唯一实际登录服务器的人,我认为通过复制 authorized_keys 文件重复使用同一密钥对没有任何坏处。如果您在机箱上有多个租户,则每个人都应该有自己的密钥对。

答案2

要对多个用户进行身份验证,只需将公共 SSH 密钥添加到普通用户的~/.ssh/authorized_keys文件和 root 的~/.ssh/authorized_keys文件中。然后,您可以通过在客户端程序中选择用户名来选择要登录的帐户。

过去,最佳做法是完全禁用 root 登录,始终使用普通用户登录并使用sudosu。但是,使用公钥身份验证,有人暴力破解您的密钥的风险很小。如果您没有为 root 用户设置密码,那么很多人会说以 root 身份登录是可以的。如果您想要增加一层安全性,请禁用 root 登录,为普通用户设置密码(因此sudo在您使用时会要求您输入密码),然后使用公钥身份验证让普通用户登录。

答案3

非常感谢!因此,我有:

  • 使用 PuttyGen(SSH-2 RSA,4096 位并添加了密码)创建公钥和私钥;
  • 将公钥上传至服务器(之前是针对 sudo 用户,然后是 root 用户);
  • 改变端口号;
  • PermitRootLogin 否,PubkeyAuthentication 是,PasswordAuthentication 否。

这样:

  • 如果我尝试以 root 或 sudo 用户身份登录并且在 Putty 上没有私钥,则会出现“断开连接:没有可用的支持的身份验证方法(服务器发送:公钥)”,不会询问密码;
  • 如果我尝试以 root + 密钥私钥 = 身份登录,它会要求输入密码,但随后出现错误“服务器尽管接受密钥却拒绝公钥签名”和“断开连接”;
  • 如果我尝试使用 sudo user + key private + 正确的密码=我可以登录

现在访问 SSH 应该有 99% 的把握了,对吧?

非常感谢

相关内容