配置不輸入密碼的SSH連線
===============================================
2020/11/29_第1次修改ccb_warlock
===============================================
最近構建了一次持續釋出環境,其中需要通過ssh金鑰配對來實現對另一臺伺服器的操作,我曾經在17年整理gitlab遠端備份時整理了這塊的內容,目前將這個內容單獨抽出一篇整理,來關聯後續的隨筆。
示例目標:jenkins伺服器可以在不用輸入使用者名稱/密碼,就可以連線builder伺服器執行ssh命令和傳輸檔案的功能。
一、環境準備
1. jenkins伺服器(centos7,192.168.1.1)
二、配置SSH金鑰配對
本次示例,jenkins伺服器需要對builder伺服器遠端執行一些操作或者遠端複製檔案,但是都需要輸入使用者名稱/密碼。
為了解決這個問題,首先需要實現不需要密碼的SSH登陸,SSH金鑰配對就可以解決這個問題。
2.1 生成金鑰對
1)在jenkins伺服器上生成rsa證書
ssh-keygen -t rsa
這樣,在/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操作完後,由於授權認證,已經不需要輸入密碼了。