SSH公钥authentication – 一个公共密钥可以用于多个用户吗?

我想使用Kickstarts部署一个RHEL5服务器,并且为了安全,我只想让远程客户端以“Developer”(我已经configuration了sshdconfiguration来禁止root访问)ssh到服务器。 我有几个关于设置的问题:

  • login服务器时,是否需要在每台客户机上安装名为“Developer”的本地用户? (我不认为这样做,但认为我只是确认,而即时通讯)
  • 在部署服务器之前,我能够为每个客户端的RSA公钥设置authorized_keys文件吗? 这是否重要的​​是什么用户实际上键入在说ssh -p 22020 Developer@server (即这将影响authorized_keys文件中所需的任何信息?)
  • 客户端的known_hosts文件中是否需要服务器的公钥(我希望这个工作每次都不会提示什么)?
  • 用户“开发人员”是否需要带〜/ .ssh的主目录,或者我可以使用不同目录下的密钥来configurationsshd服务器? (开发人员用户不需要访问主目录中的任何信息,只需要在名为“/ var / Tasks”的文件夹中的文件?

首先,只允许用户使用“开发人员”的用户名连接,没有任何安全方面的好处。 如果您希望用户拥有对同一组文件的共享访问权限,请将它们放在同一个UNIX组中,并将/ var / Tasks归于该组。 分开的用户名允许审计,更好的故障排除等。

至于你的其他问题:

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