原理很简单,私钥、公钥对匹配实现免密码登录。(登录git仓库时用的就是公钥)
形象点讲一对钥匙(私钥+公钥),私钥对应的(钥匙),公钥对应(锁);当你把公钥(锁)拷贝到指定的主机或集群中,那么拥有私钥(钥匙)的主机,就可以实现免密登录拥有公钥(锁)的主机。
所以,一般我们生成的钥匙对需要谨慎保存,
流程:
- 生成秘钥对,公钥(id_rsa.pub)和私钥(id_rsa)
- 公钥导入到~/.ssh/authorized_keys
- 修改sshd配置,开启秘钥验证
- 连接测试
第一步:生成秘钥对
#-t rsa 生成的秘钥的加密格式
ssh-keygen -t rsa
#生成两个文件
私钥:~/.ssh/id_rsa
公钥:~/.ssh/id_rsa.pub
一路回车,默认即可。
第二步:公钥导入~/.ssh/authorized_keys
~/.ssh/authorized_keys为公钥指纹保存文件,用来存储公钥,若有多个公钥都保存在次文件。
(为什么是~/.ssh/authorized_keys:因为sshd配置中默认配置是这个,所以为了减少后面操作多此一步,当然你也可以改sshd配置)
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
第三步:修改sshd配置,开启秘钥验证
编辑/etc/ssh/sshd_config
#开启秘钥验证
PubkeyAuthentication yes
#默认key路径(第二步操作就是为了这一步)
AuthorizedKeysFile .ssh/authorized_keys
#禁用密码登录(也可秘钥和密码同时生效,但一般开了秘钥都会禁用密码登录)
PasswordAuthentication no
编辑完成后,重启sshd
systemctl restart sshd
第四步:连接
通过shell终端远程连接
保存服务器生成的私钥(id_rsa),并导入。
shell终端使用私钥,远程连接服务器,服务器进行公钥匹配,实现免密。
linux服务器之间的远程连接
本地保存私钥,将公钥copy到远端,就可以实现本地到远端免秘钥。
第一种方法:使用ssh-copy-id命令
#通过ssh-copy-id将公钥复制给远端服务器
ssh-copy-id 远端服务器
#如果公钥没有在默认路径需加-i指定公钥路径
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.28.128
第二种方法:手动id_rsa.pub内容
打开id_rsa.pub复制里面的内容,将内容粘贴到远端主机的.ssh/authorized_keys文件中(若不存在authorized_keys文件,需手动创建)
发表评论