1. 程式人生 > >Linux SSH , SCP 建立信任關系(免密傳輸)

Linux SSH , SCP 建立信任關系(免密傳輸)

oot ssp pub 文章 保存 shell author blog 遠程

最近有個需求,Jenkins需要將war傳輸到各個項目節點中,所以需要遠程執行各個節點的shell腳本.但是中間有個輸入密碼的過程,在自動化部署中是行不通的,故需要增加免密登錄.具體如下:

如果想在 A 這太機器上可以不需要密碼就 ssh 到 B 、 C 兩臺機器上,可以采用如下的方法:

( 1 ) 在 A 機器上: ssh-keygen -t rsa

  期間要求輸入的,直接回車

這個命令將為 A 上的用戶生成其密鑰對,詢問其保存路徑時直接回車采用默認路徑,當提示要為生成的密鑰輸入passphrase 的時候,直接回車,也就是將 其設定為空密碼。生成的密鑰對 id_rsa , id_rsa.pub ,默認存儲在/home/username/.ssh 目錄下。

(2) 在 A 機器上:將 id_rsa.pub 的內容復制到 A 、 B 、 C 三臺機器 /home/username/.ssh/authorized_keys 文件中,如果機器上已經有 authorized_keys 這個文件了,就在文件末尾加上 id_rsa.pub 中的內容,如果沒有 authorized_keys 這個文件,直接 cp 或者 scp 就好了,下面的操作假設各個機器上都沒有 authorized_keys 文件。(如果 B 、 C 機器上沒有 ~/.ssh 目錄可以手動自己創建 , 權限要設置成可以寫,因為要 copyauthorized_keys)

在A機器上 : cp id_rsa.pub authorized_keys

在 B 和 C : scp authorized_keys username@B:~/.ssh/ 此處的 username 是要訪問的 B 機器上的用戶名。

如果機器中已經存在authorized_keys文件,則需註意,這個文件可以包含多個SSH驗證信息,這時可用 cat >>命令將驗證文件內容附加上去。

比如復制到scp .ssh/id_rsa.pub 192.168.10.2:/root/.ssh/a.pub

然後執行cat ~/.ssh/a.pub >> ~/.ssh/authorized_keys

(3) 在B和C機器上: chmod 644 authorized_keys


這一步非常關鍵,必須保證 authorized_keys 只對其所有者有讀寫權限,其他人不允許有寫的權限,否則 SSH 是不會工作的

(4) 可以直接 ssh username@ 機器名了,同一臺機器的不同用戶直接也可以以這種方式來訪問

如果經過上面的步驟還是提示需要密碼,註意一下權限問題,主要有三個權限

(1) /home/username這目錄的權限應該是700

(2) /home/username/.ssh 這個目錄的權限也應該是700

(3) /home/username/.ssh/ authorized_keys這個文件的權限是644

如果還是不正確,那麽tail /var/log/secure一下這個日誌文件,就能發現問題。

轉載文章:https://blog.csdn.net/xqhrs232/article/details/71159718

Linux SSH , SCP 建立信任關系(免密傳輸)