我想问一下如何对 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 登录,始终使用普通用户登录并使用sudo
或su
。但是,使用公钥身份验证,有人暴力破解您的密钥的风险很小。如果您没有为 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% 的把握了,对吧?
非常感谢