操作系统:CentOS 6.5 SSH v5.3
目标:
允许来自多个主机的 PubKeyAuthentication 进行根访问。
“group1” 的用户可以使用他们提供的任何内容登录:PubKey、Password、GSSAPI、KerberosPassword;但他们只能从一个特定的 IP 访问:192.168.1.10
状态:根访问权限已通过from=""
中的多个条目定义~/.ssh/authorized_keys
,并按预期工作。
问题:group1 的用户可以从 192.168.1.10 或其他地方访问;或者被完全锁定(使用之前测试过的配置)。
我尝试了几种变化,但都无济于事。
/etc/pam.d/sshd
实际上是这样的:
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
目前我有sshd_config
:
PermitRootLogin without-password
PasswordAuthentication no
KerberosAuthentication no
GSSAPIAuthentication no
UsePAM yes
AllowGroups root group1
Match Group [email protected]
KerberosAuthentication yes
PasswordAuthentication yes
GSSAPIAuthentication yes
PubKeyAuthentication yes
Match Group root
PubKeyAuthentication yes
有什么建议吗?
答案1
我找到了一个可行的解决方案。sshd 调试模式(/usr/sbin/sshd -ddd
)指示缺少的链接:
debug1: connection from 192.168.1.111 matched 'Address *'
debug3: match found
[...]
Accepted **keyboard-interactive/pam** for xxx from \
192.168.1.111 port 54282 ssh2
如您所见,登录匹配了正确的块;但由于UsePAM yes
聚丙烯酰胺显然否决了块中的“否”条目Match Address *
;参见手册:
UsePAM Enables the Pluggable Authentication Module interface.
If set to “yes” this will enable PAM authentication using
[...] PasswordAuthentication
最终配置如下:
PermitRootLogin without-password
PasswordAuthentication no
KerberosAuthentication no
GSSAPIAuthentication no
UsePAM yes
AllowGroups root group1
Match Address 192.168.1.10
KerberosAuthentication yes
PasswordAuthentication yes
GSSAPIAuthentication yes
PubKeyAuthentication yes
KbdInteractiveAuthentication yes
Match Group root
PubKeyAuthentication yes
Match Address *
KerberosAuthentication no
PasswordAuthentication no
GSSAPIAuthentication no
PubKeyAuthentication no
KbdInteractiveAuthentication no
仅在添加KbdInteractiveAuthentication no
PAM 密码功能后才禁用此块,并且来自任何地方的用户现在都被成功拒绝。