使用OpenSSH
,我已启用 ssh-login 到我的 Ubuntu 18.04 机器,调用它Remote
,我的用户帐户Remote
名为Remote-User
。我还确保只能通过公钥身份验证才能登录。以下是问题的实际描述。
我有两台本地计算机,分别称为Local-A
和Local-B
,每台计算机都有一个用户,分别称为User-A
和User-B
。我想将 的访问权限限制Remote-User@Remote
为仅User-A
和 ,User-B
并禁止其他用户访问 ,无论他们的公钥是否已添加到.ssh/authorized_keys
的文件中Remote-User@Remote
。我尝试通过添加以下行来实现此目的
AllowUsers User-A User-B
但sshd_config
我注意到即使我只是User-B
有Remote-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 设置来解决问题,因为这不太可能有效
希望这可以帮助!