我需要限制用户的访问权限,以便他们只能从特定 IP 登录。任何从其他位置登录的尝试都会失败。我该怎么做?
答案1
由于我一直在搜索如何为这个完全相同的情况配置 sshd,并且由于出于AllowUsers
此目的使用会迫使我列出允许每个其他用户登录(因此在我的情况下会生成一个巨大的配置文件),这样您就可以限制单个用户仅从您想要的主机进行连接,但不影响其他用户。
在 中sshd_config
,在任何块之前Match
(如果有):
DenyUsers user1@!thishostmayconnect,!anotherhostwhereitworks,*
办法!
除了,因此它否认user1
除了来自thishostmayconnect
和来自anotherhostwhereitworks
,但它仍然缺少主动否认*
部分,这就是最后的通配符。
总结一下:user1
否认每个主持人除thishostmayconnect
和之外anotherhostwhereitworks
。
这样,除此以外,其他所有用户user1
都可以从他们想要的任何位置登录。
您可以创建任意数量的行来限制其他用户:
DenyUsers user1@!thishostmayconnect,!anotherhostwhereitworks,*
DenyUsers user2@!workstation,*
注意:如果您已经配置,UseDNS no
则可能需要输入 IP 地址而不是主机名才能工作。
附加信息:http://manpages.ubuntu.com/manpages/cosmic/en/man5/sshd_config.5.html
答案2
添加条目AllowUsers <user>@<ip>
到您的/etc/ssh/sshd_config
USER@HOST
如果模式采用以下形式USER
,则HOST
分别检查,限制特定主机的特定用户登录。
从http://manpages.ubuntu.com/manpages/hardy/man5/sshd_config.5.html
这将只允许他们从特定 IP 登录,从而阻止所有其他 IP 的登录
答案3
您可以添加防火墙规则,只允许来自特定 IP 地址的入站 SSH,而不是锁定 SSH 服务器守护程序配置。根据您发表的其他评论,听起来您可能希望所有用户只能从单个特定 IP 地址登录,就像某种跳转箱一样。
您需要制定一条iptables
规则来执行此操作。
这种方法存在危险,因为您的有效配置被拆分为单独的可执行文件和配置文件。不要忘记在必要时更新它们,并确保每个人都知道所有部分是什么,以及每个部分的作用。