CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录
  K3k0UXFBZYtj 2023年11月13日 20 0

一、演示环境:

IP

Hostname

OS

192.168.0.200

server1

CentOS 7.9

192.168.0.201

server2

CentOS 7.9

192.168.0.202

server3

CentOS 7.9

说明:

1、上述3台主机都关闭了firewalld和SELinux;

2、每一次演示后,所有主机都会恢复默认配置。

二、配置SSH白名单用户登录:

1、server1中创建测试用户user1、user2和user3:

# useradd user1
# echo "12345678" | passwd --stdin user1
# useradd user2
# echo "12345678" | passwd --stdin user2
# useradd user3
# echo "12345678" | passwd --stdin user3

CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录_SSH

2、server1中修改sshd_config配置文件:

# echo "AllowUsers user1 user2" >> /etc/ssh/sshd_config
# tail -1 /etc/ssh/sshd_config

CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录_hosts.allow_02

3、server1重启sshd:

# systemctl restart sshd

4、测试:

(1)用户user1和user2能通过其它主机远程登录server1:

# ssh user1@192.168.0.200

CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录_SSH_03

# ssh user2@192.168.0.200

CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录_SSH_04

(2)用户root和user3无法通过其它主机远程登录server1:

# ssh root@192.168.0.200

CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录_白名单_05

# ssh user3@192.168.0.200

CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录_免密登录_06

三、配置SSH白名单IP登录:

1、相关配置文件:

(1)/etc/hosts.allow:允许指定IP或IP段登录主机

(2)/etc/hosts.deny:禁止指定IP或IP段登录主机

说明:

(1)可通过同时修改上述两个配置文件,实现白名单效果;

(2)当上述两个配置文件中同时存在相同IP时,allow优先级高,allow生效。

2、server1阻止所有IP远程登录:

# echo "sshd:ALL" >> /etc/hosts.deny
# tail -1 /etc/hosts.deny

CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录_SSH_07

3、server1仅允许server2远程登录:

# echo "sshd:192.168.0.201" >> /etc/hosts.allow
# tail -1 /etc/hosts.allow

CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录_hosts.deny_08

说明:如果允许多个IP远程登录,IP之间需要用逗号分隔

例如:

# echo "sshd:192.168.0.201, 192.168.0.202" >> /etc/hosts.allow

4、server1重启sshd:

# systemctl restart sshd

5、测试:

(1)用户root能通过server2远程登录server1:

# ssh root@192.168.0.200

CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录_SSH_09

(2)用户root无法通过server3远程登录server1:

# ssh root@192.168.0.200

CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录_hosts.allow_10

四、server1配置基于SSH公钥认证实现免密登录server2:

1、server1默认没有/root/.ssh目录:

# ls /root/.ssh

CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录_白名单_11

2、server1生成SSH私钥和公钥:

# ssh-keygen -t rsa

CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录_hosts.deny_12

说明:

(1)私钥名称和保存路径均为默认,回车即可

(2)此处私钥不设置密码,两次回车即可

# ls /root/.ssh

CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录_hosts.deny_13

说明:id_rsa为私钥文件,id_rsa.pub为公钥文件

3、server1将公钥复制至server2:

# ssh-copy-id root@192.168.0.201

CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录_hosts.allow_14

说明:如果ssh-copy-id命令不可用,也可手动将server1公钥文件id_rsa.pub中的内容复制至server2的/root/.ssh/authorized_keys文件中。

4、查看server1和server2中/root/.ssh目录文件情况:

(1)server1:

CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录_hosts.allow_15

(2)server2:

CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录_免密登录_16

说明:

/root/.ssh/known_hosts和/root/.ssh/authorized_keys是SSH(Secure Shell)协议中用于身份验证和密钥交换的两个重要文件。

(1)/root/.ssh/known_hosts:用于存储已知的远程主机的公钥指纹,用于验证远程主机身份。当尝试首次连接到一个新主机时,SSH会将该主机的公钥发送至本地主机,并将其添加至known_hosts文件中。当再次连接至该主机时,SSH会比对该主机的公钥与known_hosts文件中保存的公钥是否一致,以确保连接的安全性。

(2)/root/.ssh/authorized_keys:用于存储允许通过SSH访问的用户公钥。当尝试连接到一个新主机时,SSH会将该主机上的每个用户的公钥发送至本地主机,并检查是否在/root/.ssh/authorized_keys文件中列出了该用户的公钥,如果列出了该用户的公钥,则允许连接到该用户。

5、server1免密登录server2:

# ssh root@192.168.0.201

CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录_SSH_17

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  6tuRdFP5lxfF   2023年11月22日   31   0   0 linuxssh
  WcMlrurH7Ysw   2023年11月13日   24   0   0 sshpubkey
  8FFsoXRpcNzh   2023年11月02日   38   0   0 端口咋转发linuxssh
K3k0UXFBZYtj