举例:想要在A主机免密登录到B主机;
此文案前提是linux都安装了ssh服务,可以使用systemctl status sshd 查看ssh状态
1、使用任意用户在A主机上执行ssh-keygen -t rsa 所有提示均按回车默认,会在当前目录生成.ssh文件夹(默认.文件夹是不会展示出来的,使用ll -alh可以查看),下面有两个文件,分别是id_rsa和id_rsa.pub
- id_rsa是本机的私钥,在使用ssh协议向其它主机传输数据前,主机会使用该私钥对数据进行加密;
- id_rsa.pub是本机的公钥,因为ssh协议采用非对称加密法(公钥可以用来解密使用私钥进行加密的数据,同样,私钥也可以用来解密公钥进行加密的数据),所以主机一般将该公钥放到其它需要远程登录到的主机的ssh服务器中;
2、将A主机生成的公钥上传到B主机(两种方法),推荐第一种
- 在主机A的命令行上执行
ssh-copy-id 远程B主机用户名@远程B主机IP
,就可以将主机A上生成的公钥传到主机B中 - 首先在主机A上执行命令 scp .ssh/id_rsa.pub
远程B主机用户名@远程B主机IP
:~/home,命令执行成功后会将主机A的公钥传到主机B的家目录里。
切换到主机B,命令行执行cat ~/home/id_rsa.pub >> ~/.ssh/authorized_keys,将主机A的公钥添加到主机B的授权列表authorized_keys中。
3、执行完以上两个步骤后,可以直接使用ssh B主机用户名@B主机IP 看是否免密登录,亲测以上两个步骤之后已生效;若未生效则在主机A重启ssh服务 systemctl restart sshd ;