有多種系統維護的狀況,都是使用 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
Be First to Comment