做linux集群运维时,为了安全考虑,默认情况下会禁止用户免密登录。
比如会在/etc/ssh/sshd_config中做如下设置:
PubkeyAuthentication no
该选项表示全局禁止免密登录。
但有时候会有特殊的需求,比如只允许root或只允许某个IP段的用户免密登录,但是又不想放开全局的权限。这时候需要添加特殊的匹配规则。
以只允许root用户免密登录为例:
修改远端的/etc/ssh/sshd_config,在最下方添加如下匹配规则(注意缩进):
Match User root
PermitRootLogin yes #允许root通过ssh登录
PasswordAuthentication yes #开启密码校验
PubkeyAuthentication yes #开启公钥免密登录
该规则表示只匹配root用户,其他的用户不匹配。修改完之后重启sshd服务即可生效。
systemctl restart sshd
此时root可通过免密登录到远端的服务器,而其他用户照样无法使用公钥免密登录。这样的好处是你不需要把全局的PubkeyAuthentication改成yes。同样也可以针对某个IP段设置,例如:
Match Address 11.11.11.109
PermitRootLogin yes
PasswordAuthentication yes
PubkeyAuthentication yes
该规则表示来自于11.11.11.109段的用户可以免密登录。可以添加多个Match规则以匹配更多的策略。这样的话更灵活一点。