自動化SSH登陸遠端主機

2021-08-31 04:26:05 字數 1707 閱讀 8850

有時,要在指令碼中自動化ssh登陸遠端主機,不輸入密碼,可以用公鑰私匙的方法,方法如下。

比如a主機中要ssh直接登陸b主機,在a主機中:

1)ssh-keygen -t rsa

連續輸入三次空白,其中私鑰也不用密碼了,

2)會預設在/home/username/.ssh下生成公鑰id_rsa.pub.

3)把id_rsa.pub放到b計算機對應的/home/username/.ssh目錄下

4)在b計算機中

umask 077

cat id_rsa.pub >> authorized_keys

(將id_rsa.pub的內容追加到 authorized_keys 中)

5)這樣在a中就可以遠端不輸入密碼登陸b了

附錄,這裡說明下,選了網上的說明:

在上面的第三步中,如果產生了a主機的私匙時輸出了密碼,ssh雖然無須再輸入使用者密碼,但仍然要輸入私鑰的passphrase,這和輸入ssh密碼一樣麻煩,幸好託ibm的福,大牛daniel robbins為我們介紹了使用ssh-agent和keychain免去輸入密碼之煩的方法,

(不過應該不適用於我們這樣經常需要開關機的情況,所以,只好回到第一步,生成一對沒有passphrase的金鑰來用,雖然安全性下降了些,倒是非常方便。

安全建議

如果條件允許,使用帶有passphrase的金鑰,配合ssh-agent和keychain使用。

如果需要從不同的計算機登入伺服器,最好使用不一樣的金鑰對。

記得定期更換金鑰對,切記。

6)登陸原理:

是,與 ssh 安全密碼認證不同的是,rsa 認證需要一些初始配置。我們只需要執行這些初始配置步驟一次。之後, localbox 和 remotebox 之間的 rsa 認證就毫不費力了。要設定 rsa 認證,我們首先得生成一對金鑰,一把專用金鑰和一把公用金鑰。這兩把金鑰有一些非常有趣的性質。公用金鑰用於對訊息進行加密,只有擁有專用金鑰的人才能對 該訊息進行解密。公用金鑰只能用於 加密,而專用金鑰只能用於對由匹配的公用金鑰編碼的訊息進行 解密。rsa(和 dsa)認證協議利用金鑰對的這些特殊性質進行安全認證,並且不需要在網上傳輸任何保密的資訊。

要應用 rsa 或者 dsa 認證,我們要執行一步一次性的配置步驟。我們把 公用金鑰拷貝到 remotebox。公用金鑰之所以被稱作是「公用的」有乙個原因。因為它只能用於對那些給我們的訊息進行加密,所以我們不需要太擔心它會落入其它人手 中。一旦我們的公用金鑰已經被拷貝到 remotebox並且為了 remotebox 的 sshd 能夠定位它而把它放在乙個專門的檔案(~/.ssh/authorized_keys)裡,我們就為使用 rsa 認證登入到 remotebox上做好了準備。

要用 rsa 登入的時候,我們只要在 localbox 的控制台鍵入 ssh username@remotebox ,就象我們常做的一樣。可這一次, ssh 告訴 remotebox 的 sshd 它想使用 rsa 認證協議。接下來發生的事情非常有趣。 remotebox 的 sshd 會生成乙個隨機數,並用我們先前拷貝過去的公用金鑰對這個隨機數進行加密。然後, sshd 把加密了的隨機數發回給正在 localbox 上執行的 ssh 。接下來,輪到我們的 ssh 用 專用金鑰對這個隨機數進行解密後,再把它發回給 remotebox,實際上等於在說:「瞧,我確實有匹配的專用金鑰;我能成功的對您的訊息進行解密!」最後, sshd 得出結論,既然我們持有匹配的專用金鑰,就應當允許我們登入。因此,我們有匹配的專用金鑰這一事實授權我們訪問 remotebox。

批量ssh免密登陸遠端主機

案例 1 中心主機以root執行ssh keygen t rsa 在 root ssh 下生成id rsa 私鑰 id rsa.pub 公鑰 cat root ssh id rsa.pub tmp authorized keys 備份並授權chmod 600 通過shell傳輸公鑰至各節點 scp....

ssh自動登陸

突然碰到有人問ssh再傳輸金鑰時候能不手動輸入密碼,由於沒有碰到過這種情況,所以查了一下發現可以用sshpass做到。sshpass 引數 ssh命令 引數 p password 將引數password作為密碼 f passwordfile 提取passwordfile的第一行作為密碼 e 將環境變...

SSH遠端登陸

ssh是一種網路協議,用於計算機之間的加密登陸。windows putty linux openssh 第一次登陸對方主機,系統會出現如下提示,表示無法確認host主機的真實性,只知道公鑰指紋,是否繼續連線 ssh user host the authenticity of host host 19...