理念:客户端生成密钥对,然后把公钥发送给服务器端,测试时,通过客户端连接服务器端-->读懂其原理!
补充:一下测试恰恰相反,把服务器当作客户端即可!
理解:本文采用了两种方式来进行免密码登录!
1:远程密码登录
2:远程密钥登录
(1)在服务器端(server)通过ssh-keygen生成密钥对--> ip 是*.*.2.10
结论:会在当前用户家目录下的隐藏目录ssh下生成公钥和私钥的文件
下面分别解释下每个文件是干什么用的:
authorized_keys::存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥。
id_rsa: 生成的私钥文件
id_rsa.pub: 生成的公钥文件
known_hosts: 已知的主机公钥清单
(2)添加key认证方式:ssh-copy-id命令(注意:-i的参数!)
原因:将服务器的公钥内容追加到自己(服务器)的"~/.ssh/authorized_keys"中,方便免密登录时对随即字符串加密!
注意:执行此命令之前authorized_keys文件可能并不存在,没关系,直接执行该命令就行,会自动生成的,当然也可以自己创建一个;需注意authorized_keys文件的权限得是600;
ssh-copy-id :将本地主机的公钥复制到远程主机(主要看ip,也有可能是自己!)的 authorized_keys文件上,给远程机的用户主目录、~/.ssh 和 ~、.ssh、authorized_keys设置合适的权限
测试:执行完该步骤之后在master上就可以通过ssh master命令"免密登录自己了"。(在这一步之前即使是通过ssh登录自己,也是每一次都需要手动输入密码的)
等价于:cat id_rsa.pub >> /root/.ssh/authorized_keys中
测试:"~/.ssh/authorized_keys"是否有内容?-->此处测试的是服务器主机中的文件的内容!
注意:此处的ip的免密登录的主机,也即特定主机的特定用户想登录此ip的主机时不需要密码!
(3)如果想让其它客户端免密登录自己怎么办?
(4)测试客户端(client)对应目录的变化,并进行测试连接
注意:防火强的状态,在测试时双方最好关闭防火墙!
说明:这是服务器的ip和公钥内容记录下来,方便下次访问进行识别!