私钥和公钥的简单理解
一、SSH密钥认证配置过程:
(主机A需要连接主机B,则主机A需生成自签名密钥,将公钥发送给主机B即可实现主机A对主机B的远程密钥认证连接)
前要:软件包相关信息,目标获取到工具名称及用法,补充自己rpm命令相关知识
rpm -ql openssh-clients | more //查询openssh-clients下有那些文件及工具
which ssh-keygen //查询ssh-keygen工具在哪个目录下(/usr/bin/ssh-keygen)
rpm -qf /usr/bin/ssh-keygen //查询/usr/bin/ssh-keygen文件在哪个软件包
ssh-keygen --help //查询ssh-keygen语法使用-t表示公钥算法
1、利用ssh-keygen在客户端生成一对密钥(公、私钥)
ssh-keygen -t rsa //为当前用户生成密钥,root用户默认保存在/root/.ssh/目录(注意:生成过程会提示输入私钥保护口令,可以为空)
2、利用ssh-copy-id将客户端公钥信息发送到需要通过密钥认证连接的目标主机
ssh-copy-id root@192.168.195.123 //默认会将~/.ssh/id_rsa.pub(客户端的公钥)发送到目标远程主机所要授权登录用户的~/.ssh/authorized_keys(公钥数据库,主要保存ssh客户端的公钥信息)文件中
3、通过配置/etc/ssh/ssh-config文件禁用口令认证,最终实现密钥认证连接到目标主机
vi /etc/ssh/ssh-config //修改PasswordAuthentication no
systemctl restart sshd //重庆sshd服务
ssh root@192.168.195.123 //实现密钥认证连接到目标主机,不需要输入口令(远端服务器利用我的公钥进行认证)
补充: 客户端known_hosts文件 //表示当前用户登录过的所有服务器的公钥数据,客户端与远程服务器建立连接,远程服务器需要将远程服务器的公钥交给客户端,客户端保存在/root/.ssh/known_hosts文件中,客户端将发送给服务器的数据通过服务器的公钥进行加密,服务器获取到数据后用自己的私钥进行解密得到数据。
分析:authorized_keys与known_hosts区别 (个人理解,需要进一步验证)
都为公钥数据库
authorized_keys为,别人访问我,发给我的公钥,
known_hosts为,我访问别人,别人发给我的。
来源:https://www.bilibili.com/video/BV1Hq4y1M7ZL?spm_id_from=333.999.0.0&vd_source=a42355572f865b8eb799da280275502b