每个用户的 SSHd 限制

每个用户的 SSHd 限制

我需要限制某些用户,以便他们只能使用 ssh 密钥通过 SSH 登录,而其他用户可以使用密钥或密码登录。

一个例子:

我希望 root 用户能够使用密钥远程登录(通过 sshd),这样就不会接受任何密码(即使密码正确)

对于其他用户(系统上的每个人),他们可以使用密钥和/或密码登录

我该怎么做呢?

答案1

我要做的是进行/etc/sshd/sshd_config如下设置:

PermitRootLogin without-password

只是为了额外的安全,并避免 root 密码被锁定(它只允许 root 使用密钥登录)

我会使用AllowGroups而不是AllowUser,因为对我来说将用户添加到组比添加到 更方便,sshd_config但这可能取决于您的个人喜好。

答案2

我认为你想要的是“匹配用户”。你使用它来匹配用户名,然后缩进一系列专门适用于该用户的配置设置。

Match User Joe
  PasswordAuthentication no

Match User Jane
  PasswordAuthentication yes

我有时使用它为客户端设置 chroot 仅 SFTP 访问。

答案3

设置 ssh 如下:

nano /etc/ssh/sshd_config

AllowUsers username1 username2 username3

重启 SSH

然后将密钥提供给那些您想避免使用密码的人。

ssh-keygen 用于为您生成密钥对。以下是创建您自己的个人私钥/公钥对的会话:

#ssh-keygen -t rsa

命令 ssh-keygen -t rsa 启动密钥对的创建。

我没有为我的设置输入密码(而是按下了 Enter 键)。

私钥保存在 .ssh/id_rsa 中。此文件是只读的,仅供您使用。其他人不得看到该文件的内容,因为它用于解密使用公钥加密的所有通信。

公钥保存在.ssh/id_rsa.pub中。

然后将其内容复制到您希望通过 SSH 连接到的系统的 .ssh/authorized_keys 文件中,而无需提示输入密码。

#scp id_rsa.pub remote system:~/.ssh/authorized_keys

最后锁定账户(仍然可以进行密钥认证。)

# passwd -l username1

答案4

以上所有方法都很棒,而且很有效,如果可以的话我可以稍微总结一下。我sshd_config在大量服务器和风格中使用标准,使配置成为深思熟虑的过程,这就是我使用的。

我的用例:

  • 根访问权限仅限于来自 2 个特定 IP 的密钥
  • 自动化用户(例如 ansible)仅限于来自特定服务器的密钥(例如 RunDeck、Jenkins 等)
  • 应用程序用户可能根本无法使用 ssh 登录
  • 管理员和用户可以使用密钥或密码

首先,我主要使用Allow_Groups,这样更容易管理多个机器和大量不同的用户。对于所有机器(例如自动化或监控)的共同用户,allow_Users也很好用,但我仍然更喜欢使用组。

现在讨论实际的配置/etc/ssh/sshd_config

首先,只有特定组(或用户)才能进行 SSH 访问:

AllowGroups sshusr

这实际上意味着用户需要成为该组的成员sshusr才能使用 SSH。为了防止应用程序用户获得 ssh 访问权限,只需确保他们是不是该团体的一名成员sshusr笔记:这包括根,所以您需要添加rootsshusr组!

对于仅通过密钥进行 root 访问,请使用:

PermitRootLogin without-password

限制组使用仅密钥身份验证:

Match Group ansible,monitor
  PasswordAuthentication no

默认情况下,我会关闭诸如等功能,port forwardingX11 forwarding对于特定组,您可能需要将其打开并允许密码验证(通常on是默认设置,但对于安全环境,您可能希望将其打开off以使密钥成为默认值)

Match Group sysadmin,dbadmin
  PasswordAuthentication yes
  AllowTcpForwarding yes
  PermitTunnel yes
  X11Forwarding yes

sftp然后你会遇到只有用户这样的特殊情况:

Match Group sftp
  ForceCommand internal-sftp
  PermitTTY no
  MaxSessions 5

现在限制密钥以仅允许特定 IP 访问。这也适用于 FQDN,但我在这里没有使用它。在文件中将~/.ssh/authorized_keys限制添加from=到适用的密钥之前

from="10.1.1.1,10.2.2.2,10.3.3.0/24" ssh-rsa AAAAB3NTheRestOfMyKeyxyz

这将允许密钥仅从那些特定的 IP 上使用。

我相信这会对你以及其他很多人有帮助。

相关内容