限制只有选定用户才能使用公钥进行 SSH 登录

限制只有选定用户才能使用公钥进行 SSH 登录

使用OpenSSH,我已启用 ssh-login 到我的 Ubuntu 18.04 机器,调用它Remote,我的用户帐户Remote名为Remote-User。我还确保只能通过公钥身份验证才能登录。以下是问题的实际描述。

我有两台本地计算机,分别称为Local-ALocal-B,每台计算机都有一个用户,分别称为User-AUser-B。我想将 的访问权限限制Remote-User@Remote为仅User-A和 ,User-B并禁止其他用户访问 ,无论他们的公钥是否已添加到.ssh/authorized_keys的文件中Remote-User@Remote。我尝试通过添加以下行来实现此目的

AllowUsers User-A User-B

sshd_config我注意到即使我只是User-BRemote-User@Remote

AllowUsers User-A

这使我认为,任何将公钥添加到文件的用户Remote-User@Remote.ssh/authorized_keys将有权访问,而不管我尝试使用施加的任何限制AllowUsers

我想知道是否有人对如何解决这个问题有任何建议。请记住,我不太熟悉这个领域,所以我可能遗漏了重要信息。如果有,请告诉我,我很乐意更新这个问题。

答案1

AllowUsers文件中的选项正是/etc/ssh/sshd_config您通过 完成用户访问限制所需要的ssh

请参阅手册页sshd_配置

AllowUsers
      This keyword can be followed by a list of user name patterns, separated by spaces.
      If specified, login is allowed only for user names that match one of the patterns.
      Only user names are valid; a numerical user ID is not recognized.  By default, login
      is allowed for all users.  If the pattern takes the form USER@HOST then USER and
      HOST are separately checked, restricting logins to particular users from particular
      hosts.  HOST criteria may additionally contain addresses to match in CIDR
      address/masklen format.  The allow/deny users directives are processed in the
      following order: DenyUsers, AllowUsers.

为了使更改sshd_config生效,您需要使用以下命令重新启动sshd服务:

$ sudo systemctl restart ssh.service

如果仍然不起作用,请检查/etc/ssh/sshd_config.d文件夹中是否有任何推翻您声明的其他配置文件AllowUsers

答案2

当您将多个公钥添加到.ssh/authorized_keys文件时,任何拥有私钥的人都remote-user可以登录remote-user

允许特定用户的最佳且最安全的方式是为单个用户设置单独的帐户,并且其单独的公钥应保存在.ssh/authorized_keys文件中。这里不应使用通用帐户Remote-User。您可以限制用户仅通过 openssh 中的 ssh 密钥进行允许。因此,单独的用户将拥有单独的帐户,只有该用户才能登录其帐户。

答案3

SSH 密钥唯一地标识用户。它可以重复使用,但任何拥有私钥的人都可以完全访问该身份。

尝试添加额外的限制会有问题。SSH 密钥保证密钥的所有者可以访问密钥(即,只要所有者保持密钥的隐私,使用他们的密钥就可以保证他们的身份)。

任何其他形式的用户识别,例如连接的源机器/IP 地址,都不会有同等程度的保证。换句话说,这些形式极有可能被欺骗/欺骗。

因此,这是推荐的解决方案:

  • ssh-keygen为每个用户运行,为他们提供一个新的、唯一的 SSH 密钥
  • 更换旧钥匙并处理
  • 将正确用户的公钥添加到authorized_keys文件中
  • 维护密钥安全;密钥是用户的身份;允许第二个用户访问密钥使他们能够随意冒充该身份
  • 不要尝试通过额外的 SSH 设置来解决问题,因为这不太可能有效

希望这可以帮助!

相关内容