1. 程式人生 > 實用技巧 >配置不輸入密碼的SSH連線

配置不輸入密碼的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操作完後,由於授權認證,已經不需要輸入密碼了。