我有几台服务器使用以下sshd配置。
# Authentication:
PermitRootLogin no
AllowGroups ssh
PubkeyAuthentication yes
PasswordAuthentication no
这意味着组“ssh”中的每个用户都可以登录,但只能使用pubkey。不允许登录root。
但是root必须有一个例外:我的备份服务器必须以root身份登录。
我试过了:
AllowUsers root@$ip
AllowGroups ssh
但AllowUsers会覆盖AllowGroups语句。所以只有来自$ ip的root才能登录。
Match User root, Address $ip
PermitRootLogin {yes|without-password}
AllowUsers root
和
Match Address $ip
PermitRootLogin {yes|without-password}
AllowUsers *
两者都被完全忽略了。组“ssh”中的正常用户只能登录。
这是一个简单的场景,用户登录限制为pubkey,root登录限制为pubkey和某些ip。怎么解决?
答案 0 :(得分:5)
您尚未发布整个sshd_config
,因此重现这种情况有点困难,但这似乎有效:
# Main config prohibits all logins
PermitRootLogin no
AllowUsers root
# Permit root logins from a specific address
Match Address 192.168.1.20
PermitRootLogin yes
# Allow logins to anyone in "ssh" group.
Match Group ssh
AllowUsers *
另一种解决方案是:
在sshd_config
:
AllowGroups ssh
PermitRootLogin without-password
让root
成为ssh
群组的成员。
usermod -a -G ssh root
使用受限制的公共密钥添加到/root/.ssh/authorized_keys
源地址,如下所示:
from=192.168.1.20 ssh-rsa ...
这样可以得到你想要的东西:
ssh
组的成员才能登录。root
只能从中的特定IP地址登录
authorized_keys
档案。