另一个解决方案(取决于错误修复!)

另一个解决方案(取决于错误修复!)

我有一个监控服务器,它需要它监控的每个盒子的非 sudo 用户帐户的 SSH 连接详细信息。有没有办法可以配置具体的用户帐户是否只能从特定 IP(或者更好的是主机名)登录?我不想限制服务器上其他用户从其他地址连接的能力(否则我就使用防火墙),或者仅对监控服务使用密码验证

答案1

请参阅man sshd_config。您可以添加AllowUsers块,在其中指定用户和主机,如下所示:

AllowUsers user@host # or IP

当然,如果有的话,您还需要指定您允许登录的其他用户。

另一个解决方案(取决于错误修复!)

当我再次思考时,我发现有可能可以sshd_config像这样修改:

Match Host !hostname
    DenyUsers user
Match Host hostname
    AllowUsers user

user这将轻易阻止除来自hostname和其他地方之外的所有用户user

但它无法工作,因为上游报告了一些错误 [1] [2]。但我们承诺将在下一版本中修复它。

答案2

您可以在文件的 AllowUsers 行中使用通配符/etc/ssh/sshd_config。因此,添加以下行是可行的:

AllowUsers *@192.168.1.100

或者:

AllowUsers *@hostname

允许来自该 IP 地址或主机名的所有人访问。

记得:

service ssh restart

一旦您进行了更改,只要您使用的是 15.04 之前的版本。15.04 现在使用 systemd,因此具有不同的服务控制机制。

答案3

根据手册页,这应该有效:

DenyUsers user@"!host,*"

我在 Debian 上测试了它并且它似乎运行正常。

答案4

由于这是谷歌的顶级搜索结果,我认为人们也应该知道在文件中设置权限/etc/hosts.allow(感谢Cameron Oltmann的博客文章就此事):

要根据原始 IP 地址限制对 Linux 计算机的 ssh 访问,请编辑 /etc/hosts.allow:

sshd : localhost : allow
sshd : 192.168.0. : allow
sshd : 99.151.250.7 : allow
sshd : mydomain.net : allow
sshd : ALL : deny

上述条目将允许从 localhost、192.168.0.x 子网、单个 IP 地址 99.151.250.7 和 mydomain.net(假设 mydomain.net 有一个 ptr 记录以方便反向查找)进行 ssh 访问。所有其他 IP 地址都将被拒绝访问 sshd。

注意:您可以根据 IP 地址、子网或主机名允许或拒绝。按从最具体到最不具体的顺序列出规则。只有在找到匹配的行时才会读取文件,因此如果您以 ssdh : ALL :deny 开头,则将不允许任何 ssh 连接。

你应该能够使用user@address这个文件,按照这个lifewire.com 链接

更复杂的形式 daemon@host 和 user@host 分别在服务器端点模式和客户端用户名查找部分中解释。

相关内容