Linux 配置SSH免密登录

  • 公私钥简介与原理
    公钥和私钥都属于非对称加密算法的一个实现,这个加密算法的信息交换过程是:
    1. 持有公钥的一方(甲)在收到持有私钥的一方(乙)的请求时,甲会在自己的公钥列表中查找是否有乙的公钥,如果有则使用一个随机字串使用公钥加密并发送给乙。
    2. 乙收到加密的字串使用自己的私钥进行解密,并将解密后的字串发送给甲。
    3. 甲接收到乙发送来的字串与自己的字串进行对比,如过通过则验证通过,否则验证失败。
      非对称加密算法不能使用相同的密钥进行解密,也就是说公钥加密的只能使用私钥进行解密

配置SSH免密登录 A登录B

A切换到对应的用户

【比如:Jenkins构建时都是以jenkins用户进行操作,所以要以jeknins用户来配置免密钥登录。】
su - root

A用ssh-keygen -t rsa产生密钥对[如果需要]

ssh-keygen -t rsa

A用ssh-copy-id将公钥从A复制到B

方法一:复制Aid_rsa.pub到B服务器,然追到authorized_keys文件中
    B服务器 先备份 【如果需要】
        cp  -rf /root/.ssh/authorized_keys /root/authorized_keys_backup.txt     
    A服务器 查看内容
        vi /root/.ssh/id_rsa.pub    
    B服务器 写入内容并且授权目录
        vi /root/.ssh/authorized_keys 
        chmod 600 /root/.ssh/authorized_keys (注:文件权限必须是600,否则无效)
方法二: ssh-copy-id
    ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected] 
    如果你远程服务器SSH端口没有修改过,可以不用加-p 23456,要特别注意双引号。(如果端口非22远程免密要使用非root用户不然会报错)
方法三:
    当然你复制文件到远程服务器也可以用SCP命令。

验证登录

ssh [email protected]     #如果端口不是22 ssh -p 端口 root@ip地址
logout                      #退出远程登录
如果不输密码成功连上说明已经配置成功,如果连不上吧秘钥公钥什么的都删了再来

配置完成后,两边服务器文件以及权限

A
[sjfuser@jenkins ~]$ ll /root/.ssh/
-rw-------. 1 sjfuser sjfuser 1671 4月 19 05:10 id_rsa
-rw-r--r--. 1 sjfuser sjfuser 398 4月 19 05:10 id_rsa.pub
-rw-r--r--. 1 sjfuser sjfuser 417 4月 19 05:08 known_hosts
B
-rw------- 1 root root 1217 Apr 21 10:46 /root/.ssh/authorized_keys

原理

将此公钥写入任何一台远程主机的/root/.ssh/authorized_keys后,便可通过密钥登陆到远程主机。
任何一台主机,拿到该密钥id_rsa后,便可登陆写入了该公钥id_rsa.pub的主机。

问题

如果添加指纹的时候提示添加失败,是因为你以前添加过了这个ip的指纹。
解决办法:将.ssh目录的known_hosts文件删除掉。也可以打开这个文件把对应ip的那条记录删除。

Jenkins配置SSH免密登录

https://blog.csdn.net/qq_30059235/article/details/103890477

使用Xshell生成key,免密码登录linux

https://blog.csdn.net/fireofjava/article/details/40624215

你可能感兴趣的:(Linux 配置SSH免密登录)