![AIX openSSH 允许任何用户使用任何 IP(默认),但限制特定用户使用某个 IP](https://linux22.com/image/629851/AIX%20openSSH%20%E5%85%81%E8%AE%B8%E4%BB%BB%E4%BD%95%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%E4%BB%BB%E4%BD%95%20IP%EF%BC%88%E9%BB%98%E8%AE%A4%EF%BC%89%EF%BC%8C%E4%BD%86%E9%99%90%E5%88%B6%E7%89%B9%E5%AE%9A%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%E6%9F%90%E4%B8%AA%20IP.png)
似乎无法找到正确的匹配项
sshd 应该允许任何地方的任何人,即通常/默认配置,但我想将用户限制为 IP
例如,bob 只应被允许从 IP 1.2.3.4 进入
PS 我已添加 AIX 作为操作系统。虽然 PAM 是 AIX 的一部分,但其实现方式略有不同
答案1
鉴于还没有其他人提到它,可以使用该pam_access
模块来做到这一点。
您需要检查 pam 堆栈是否正在调用此模块,方法是查找/etc/pam.d/sshd
并添加一个account
值(如果不存在)。IE
#%PAM-1.0
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
account required pam_nologin.so
account required pam_access.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session optional pam_keyinit.so force revoke
session include password-auth
session include postlogin
session required pam_tty_audit.so enable=*
然后,在访问文件(默认为/etc/security/access.conf
)中添加以下三行(假设没有其他行提供任何其他安全设置)。
+ : bob : 1.2.3.4
- : bob : ALL
+ : ALL : ALL
在 SSH 中
我认为下面的方法可行。
<Global scope>
DenyUsers bob
Match Address 1.2.3.4
AllowUsers bob
答案2
如果你认识所有其他用户,那么这将有效:
AllowUsers user@ip user2 user3
但不幸的是,它不能使用通配符。
根据您的最终目标,您可以强制用户使用 SSH 密钥而不是密码,并使用语句限制用户~/.ssh/authorized_keys
文件中的主机from=
(man sshd
有关格式的信息,请参阅)。
答案3
如果我理解正确的话,您想允许所有幸运的非 Bob 用户来自任何地方,但倒霉的 Bob 只能来自 1.2.3.4。
也许可以尝试这个:
AllowUsers !bob
AllowUsers [email protected]