SSH 公钥认证 - 一个公钥可以用于多个用户吗?

SSH 公钥认证 - 一个公钥可以用于多个用户吗?

我想使用 Kickstarts 部署 RHEL5 服务器,出于安全考虑,我只允许远程客户端以“Developer”用户身份通过​​ ssh 连接到服务器(我已配置 sshd 配置以禁用 root 访问权限)。我对设置此服务器有几个问题:

  • 登录服务器时,每台客户端计算机上是否都需要有一个名为“开发人员”的本地用户?(我认为不需要,但我想在登录时确认一下)
  • 在部署服务器之前,我是否能够只设置 authorized_keys 文件,其中包含每个客户端的 RSA 公钥的条目?用户实际输入的内容是否重要ssh -p 22020 Developer@server(即,这会影响 authorized_keys 文件中所需的任何信息吗?)
  • 客户端的 known_hosts 文件中是否需要服务器的公钥(我希望它能正常工作每一个时间而没有任何提示)?
  • 用户“开发人员”是否需要带有 ~/.ssh 的主目录,或者我是否可以使用来自不同目录的密钥配置 sshd 服务器?(开发人员用户不需要访问主目录中的任何信息,只需访问名为“/var/Tasks”的文件夹中的文件?

答案1

首先,只允许用户使用“developer”用户名进行连接没有任何安全优势。如果您希望用户对同一组文件拥有共享访问权限,请将他们放在同一个 UNIX 组中,并让 /var/Tasks 由该组拥有。单独的用户名可以进行审计、更好地排除故障等。

至于您的其他问题:

  • 客户端用户名并不重要。连接时,用户可以指定要使用的远程用户名:ssh [email protected]
  • 您可以在具有磁盘空间的范围内使用尽可能多的用户密钥填充 authorized_keys,并且可以在部署服务器之前完成此操作。此外,无论 sshd 正在监听哪个端口号,都会读取相同的 authorized_keys 文件。
  • 是的,服务器的公钥将存储在known_hosts和首次连接中将要提示用户接受远程密钥。这部分使得 SSH 能够检测到中间人攻击,如果用户盲目地接受任何密钥,SSH 就会容易受到中间人攻击。如果您对客户端计算机有足够的访问权限,则可以将远程服务器密钥指纹添加到每个客户端的 known_hosts 中。这是避免此提示的唯一方法。
  • 您可以在 sshd_config 中使用 AuthorizedKeysFile 关键字来指定您希望 sshd 在服务器上查找密钥的位置。我将密钥放入 %u 中,/etc/ssh/keys/%u其中 %u 是带有用户名的文件,并确保用户只有读取权限。

相关内容