Skip to content

SSH免密碼登入遠端主機

有多種系統維護的狀況,都是使用 shell script 方式到遠端去處理,而中間傳輸的過程需要加密,所以就必須使用 SSH 來連線,問題在於 shell script 執行時並不會有管理者去輸入密碼,那麼怎麼認證呢?怎麼免密碼到遠端主機去做事??

你需要幾個步驟

  • 設定 Firewall 
  • 建立 Public / Private key
  • 複製 Public Key 到遠端主機去

Step 1:設定防火牆 iptables

這個步驟的前提是你有啟用 iptables 並且將欲連線之主機給阻擋了,不然是不需要更動的。
請參考:鳥哥的Linux 私房菜– Linux 防火牆與NAT 伺服器

Step 2:建立 public / private key

先定義想要連線的主機稱為 Source ,連線過去的目的主機為 Destination,這樣才不會搞錯方向。

在 Source 主機執行 ssh-keygen-d 

ssh-keygen -d
Generating public/private dsa key pair.
Enter file in which to save the key (/home/admin/.ssh/id_dsa):
Enter passphrase (empty for no passphrase): <直接按Enter>
Enter same passphrase again: <直接按Enter>
Your identification has been saved in /home/admin/.ssh/id_dsa.
Your public key has been saved in /home/admin/.ssh/id_dsa.pub.
The key fingerprint is:
52:22:66:99:ee:6f:0c:22:88:30:7a:22:f5:11:33:83 admin@workstation
The key's randomart image is:
+--[ DSA 1024]----+
|      .. + =  .        |
|    . . -       o .     |
|  - + *     + =      |
|   - *     + = .      |
|  - - -  * S o . + E |
| * *. = .o. + o - -  |
|    . . +..+. + +   |
|     .   ...o   - - -   |
|         .... + + +  |
+--------------------+

執行完後,會產出兩個檔案 id_dsa 與 id_dsa.pub 分別是 Source 主機的 Private key 與 public key。

Step 3:複製 source 主機的 public key 到遠端 Destination 主機去

這階段要怎麼 copy 都可以,你也可以簡單使用

scp id_dsa.pub Destination:/source.pub

連線到目的主機 Destination ,然後將剛剛複製過來的 source.pub 搬移到 .ssh 目錄,並命名為「authorized_keys2」。

mv source.pub .ssh/authorized_keys2

Step 4:測試連線

從來源 source 直接執行 ssh destination 就可以免密碼的登錄到目的主機了。

當然你也可以直接執行遠端的命令

ssh john@140.112.1.1 ls -al
Published inLinux

Be First to Comment

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *