1.前言

         当有多台服务器的时候,每次登录都需要输入密码,时间长了晚上都会做噩梦。可以采用ssh免秘钥登录。要系统学习ssh可以man ssh-kengen,里边有好多选项,本文介绍了快速做秘钥验证,我们公司就是采用的以下方法

2.操作

(1)生成秘钥

[root@server1 .ssh]# ssh-keygen                       //生成公钥和私钥

wKioL1ds-YLBbKsMAABa253ZHGU615.png

[root@server1 .ssh]# ls /root/.ssh/                  //查看生成的公钥和私钥

wKiom1ds-oOgbikaAAAIpnRUtSQ131.png

(2)部署秘钥

[root@server1 .ssh]# ssh-copy-id -i "-p 22 192.168.11.140"     //-p 端口,要登陆的服务器ip

wKiom1ds_D6jqPL6AABinQSv8a0946.png

3.验证

[root@server1 .ssh]# ssh 192.168.11.140        //登陆,需要加指定端口的话ssh -p 端口 远端服务器ip

wKiom1ds_aTTnSg6AAAQTpQernA449.png

4.解析

(1)当执行完ssh-keygen命令后,会在/root/.ssh/目录下生成两个文件,id_rsa和id_rsa.pub。id_rsa是私钥,id_rsa.pub是公钥。

(2)当执行完ssh-copy-id命令后,当你输入yes的时候会在本地服务器上生成一个known_hosts文件,这个文件会把远程计算机的相关信息记录在这个文件里,确保你下次登录的时候是相同的服务器,避免遭受hijack之类的***。如果登录的服务器信息有所变动,那你登录的时候就会提示你,然后登录失败。当你输入远端服务器的密码之后会在远端服务器生成一个authorized_keys,有了这个文件,下次登录就不需要再次输入密码。

(3)公司有两台服务器A,B需要来回切换公网ip,做的秘钥验证,刚开始把A服务器上的这四个文件复制到B服务器上,但是不能用,know_hosts文件里记录的是A服务器的信息,重新做了登了一下,选择yes之后就可以了,因为秘钥文件一样,只需记录下B服务器的信息即可

wKiom1dwjxbyrVYpAACO6Z88XPc642.png