我有一个监控服务器,它需要它监控的每个盒子的非 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
答案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 分别在服务器端点模式和客户端用户名查找部分中解释。