配置不输入密码的SSH连接

===============================================

 2020/11/29_第1次修改                       ccb_warlock

 

===============================================

最近构建了一次持续发布环境,其中需要通过ssh密钥配对来实现对另一台服务器的操作,我曾经在17年整理gitlab远程备份时整理了这块的内容,目前将这个内容单独抽出一篇整理,来关联后续的随笔。

 

示例目标:jenkins服务器可以在不用输入用户名/密码,就可以连接builder服务器执行ssh命令和传输文件的功能。


一、环境准备

1. jenkins服务器(centos7,192.168.1.1)

2. builder服务器(centos7,192.168.1.2)

 


二、配置SSH密钥配对

本次示例,jenkins服务器需要对builder服务器远程执行一些操作或者远程复制文件,但是都需要输入用户名/密码。

为了解决这个问题,首先需要实现不需要密码的SSH登陆,SSH密钥配对就可以解决这个问题。

 

2.1 生成密钥对

1)在jenkins服务器上生成rsa证书

ssh-keygen -t rsa

1. 生成的过程中提示输入密钥对保存位置,直接回车,接受默认值就行了。

2. 因为之前已经有/root/.ssh/id_rsa 文件存在,因此提示你是否覆盖,输入y表示覆盖 。

3. 接着会提示输入一个密码,直接回车,让它空着。当然,也可以输入一个密码。

4. 接着输入确认密码,输入完之后,回车密钥对就生成完了。

 

这样,在/root/.ssh下生成id_rsa 和 id_rsa.pub 两个文件,其中公共密钥保存在 /root/.ssh/id_rsa.pub,私有密钥保存在/root/.ssh/id_rsa。

 

2)jenkins服务器上cp生成rsa公钥

在/root/.ssh下复制备份一份id_rsa.pub 命名为 id_rsa.pub.jenkins,以便拷贝到远程服务器B。

cd /root/.ssh
cp id_rsa.pub id_rsa.pub.jenkins

 

2.2 生成rsa公钥上传到builder服务器

先在builder服务器上创建目录/root/.ssh。

mkdir -p /root/.ssh

 

使用scp命令进行远程复制,将jenkins服务器生成的id_rsa.pub.jenkins文件拷贝到builder服务器的/root/.ssh目录下。

scp /root/.ssh/id_rsa.pub.jenkins root@192.168.1.2:/root/.ssh/

此时使用scp命令需要输入密码,当把下面的“2.3 密钥配对”执行后,以后jenkins服务器使用scp命令复制文件到builder服务器的话,就不需要输入密码了。

 

2.3 密钥配对

1)在builder服务器的/root/.ssh下创建authorized_keys文件

touch /root/.ssh/authorized_keys

 

2)通过 cat 命令 把id_rsa.pub.jenkins 追写到 authorized_keys 文件中

cd /root/.ssh/
cat id_rsa.pub.jenkins >> authorized_keys

 

3)修改authorized_keys文件的权限

chmod 400 authorized_keys

PS. 如果设置为777,那么登录的时候,还是需要提供密码的。

 

4)测试是否还需要输入密码

接着来测试下jenkins服务器使用scp复制文件到builder服务器是否还要输入密码。

scp /root/.ssh/id_rsa.pub.jenkins root@192.168.1.2:/root/.ssh/

发现在2.3之前,由于没有设置ssh证书授权认证时,上传需要输入密码;2.3操作完后,由于授权认证,已经不需要输入密码了。

 

 

posted @ 2020-11-29 21:46  粽先生  阅读(554)  评论(0编辑  收藏  举报