Linux配置SSH公鑰認證與Jenkins遠程登錄進行自動發布


  公鑰認證,是使用一對加密字符串,一個稱為公鑰(public key), 任何人都可以看到其內容,用於加密;另一個稱為密鑰(private key),只有擁有者才能看到,用於解密。

在使用jenkins自動構建並遠程登錄服務器進行發布應用的時候,需要使用SSH公鑰認證來解決登錄服務器的問題。

  其實很簡單,只需要兩個指令即可。

ssh-keygen -t rsa -P ''
ssh-copy-id -i ~/.ssh/id_rsa.pub <IP>

  假設有兩台服務器,A是Jenkins構建服務器,B是應用服務器,A構建好應用之后,將包傳到B進行發布。

在A上面執行 ssh-keygen -t rsa -P '', -P后面兩個單引號表示密碼為空

之后會在~/.ssh目錄下創建兩個文件id_rsa(私鑰),id_rsa.pub(公鑰)

接下來繼續在A上執行 ssh-copy-id -i ~/.ssh/id_rsa.pub <IP>,表示將公鑰發給B,發到B服務器的~/.ssh目錄下

之后在用ssh B<ip>嘗試能否免密登錄B服務器,如果還是提示需要輸入密碼,則有以下原因

a. 非root賬戶可能不支持ssh公鑰認證(看服務器是否有限制)

b. 傳過來的公鑰文件權限不夠,可以給這個文件授權下  chmod 644 authorized_keys

c. 使用root賬戶執行ssh-copy-id -i ~/.ssh/id_rsa.pub <IP> 這個指令的時候如果需要輸入密碼則要配置sshd_config 

vi /etc/ssh/sshd_config

修改完后要重啟sshd服務

service sshd restart

最后,如果可以SSH IP 免密登錄成功說明SSH公鑰認證成功。

 

-------------------------------------------配置插曲 開始--------------------------------------------------

簡單步驟總結(用非root用戶):

1.       server1 上使用xxx用戶 ,先清理之前的ssh登錄記錄,rm –rf ~/.ssh  運行ssh-keygen –t rsa(只需回車下一步即可,無需輸入任何密碼)。生成認證密鑰。

2.       server1 上使用 ssh-copy-id xxx@server2_IP(需輸入server2密碼) , 即會將驗證密鑰copyserver2xxx/.ssh/authorized_keys

3.       server1 上使用 ssh xxx@server2_IP 。即可 免密碼登錄。

4.       相反,即可實現相互免密碼登錄。

如果最后還是不能實現免密登錄,則可以看下 cat /var/log/secure,比如你xxx用戶的家目錄權限太高:

 

最后把家目錄設置成700即可,注:目錄權限調整可能影響應用程序,請謹慎操作

-------------------------------------------配置插曲 結束--------------------------------------------------

接下來進行jenkins的SSH配置,如下

 

 

 

1.       server1 上使用haieradmin用戶 ,先清理之前的ssh登錄記錄,rm –rf ~/.ssh  運行ssh-keygen –t rsa(只需回車下一步即可,無需輸入任何密碼)。生成認證密鑰。

2.       server1 上使用 ssh-copy-id haieradmin@server2_IP(需輸入server2密碼) , 即會將驗證密鑰copyserver2haieradmin/.ssh/authorized_keys

3.       server1 上使用 ssh haieradmin@server2_IP 。即可 免密碼登錄。

4.       相反,即可實現相互免密碼登錄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM