“ 基于密钥的SSH认证流程。”
01
—
基于密钥的SSH认证流程
Client生成一对密钥,将公钥存放于Server上,私钥自己留着。
Server收到Client的登录请求,生成一个随机字符串并发送给Client。
Client用私钥对字符串进行加密并发送给Server。
Server用公钥解密得到字符串,并和之前发出去的字符串进行比对。
根据比对结果判断客户端的合法性。
02
—
开启SSH密钥认证机制
需ROOT用户权限操作
1、编辑配置文件
vi /etc/ssh/sshd_config
2、开启公钥认证参数
PubkeyAuthentication yes
3、公钥认证文件存放位置
AuthorizedKeysFile .ssh/authorized_keys
4、控制存放密钥的文件目录权限
chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys
5、重启sshd服务,生效修改的配置
systemctl restart sshd
03
—
公钥、私钥的生成
方法比较多,确保安全推荐使用本地工具生成的方法,比如openssl、ssh-keygen或者ssh客户端工具生成,这里使用ssh-keygen工具来实现:
直接调用ssh-keygen生成基于rsa加密算法的密钥对,默认存储位置(私钥)~/.ssh/id_rsa和(公钥)~/.ssh/id_rsa.pub
[root@manager ~]# ssh-keygen -t rsa
04
—
密钥和SSH服务结合
第一步:
追加公钥内容到authorized_keys文件中。
[root@manager ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
第二步:
复制私钥到ssh客户端并导入,用户身份验证的时候使用Public Key。
第三步:
服务器端/var/log/secure验证结果,会看到类似RSA的记录。
Aug 11 11:00:17 localhost sshd[91292]: Accepted publickey for root from 192.168.8.1 port 6281 ssh2: RSA SHA256:v91KVzojzyfWrtBqfUFX2hgPITOZxAsla7L2lMlNl3E
Aug 11 11:00:17 localhost sshd[91292]: pam_unix(sshd:session): session opened for user root by (uid=0)
05
—
结束语
SSH服务端版本,操作系统版本的差异可能会导致配置区别,但是总体思路不变,特别是第二段内容配置影响比较大。