Skip to Content

SSH 信任授權機制設置

用途
基於以下理由︰
 * 對於登入頻繁的主機,想利用 SSH 加密傳輸模式自動登入。
 * 對於每次利用 scp 傳輸檔案時,皆得輸入密碼感到無限厭煩。
您可能會想要瞭解如何應用 SSH 信任授權機制來減少得到肌腱炎的機率 ^_^

應用環境
Server_A︰192.168.168.1
Server_B︰192.168.168.12
Test_account︰ruixin (Server_A & Server_B 皆有 ruixin 的使用者帳號)

範例目的
Server_A 主機中的 ruixin 帳號欲使用 SSH 信任授權機制,以 ruixin 身份來自動登入到 Server_B 主機。

設置
setup_1: 使用 ssh-keygen 指令來產生 SSH2 DSA public key。
指令過程如下︰

Server_A% mkdir ~/.ssh # 若未曾於主機中使用 ssh 登入其他主機或本地主機時,需先建立 .ssh 目錄
Server_A% cd ~/.ssh # 切換到使用者家目錄中的 .ssh 子目錄下
Server_A% ssh-keygen -d
Generating public/private dsa key pair. # 開始產生 dsa key,依系統能力,所需時間不一
Enter file in which to save the key (/home/ruixin/.ssh/id_dsa): # 按 Enter 採用預設值
Enter passphrase (empty for no passphrase): # 因不使用密碼,請直接按 Enter 即可(註一)
Enter same passphrase again: # 再次輸入密碼,以確認無手誤 (同上,直接按 Enter 即可)
# 然後便會看到如下畫面 (各人不同)︰
Your identification has been saved in /home/ruixin/.ssh/id_dsa.
Your public key has been saved in /home/ruixin/.ssh/id_dsa.pub.
The key fingerprint is:
7b:ad:d2:5e:09:af:a7:0a:1d:4e:6c:8d:e7:24:c7:6b ruixin@smb.old2.com.tw
Server_A%

註一︰
因為最主要的目的就是不想再有輸入密碼的這個動作了,所以若在此步驟還是給予指定密碼的話,則只要透過 ssh 來連線該主機時,便都得要輸入在此步驟所輸入的密碼,非但沒有達到目的,反而多加了個釐清密碼要用哪個的麻煩。

setup_2: 傳送 publick key 至欲登入主機,以建立主機間的信任機制。
指令過程如下︰

Server_A% scp ~/.ssh/id_dsa.pub ruixin@192.168.168.12:/home/ruixin/.ssh/authorized_keys
# 將 Server_A 中 /home/ruixin/.ssh/id_dsa.pub 檔案複製到 Server_B 中的 /home/ruixin/.ssh/ 目錄下
#並存為 authorized_keys 的檔名。(註二)
Password: # 因尚未建立信任機制,故需要輸入 ruixin 帳號於 Server_B 的密碼。
id_dsa.pub                                100%    612    0.6KB/s    00:00
Server_A%

註二︰
因 /etc/ssh/sshd_config 中 AuthorizedKeysFile 的預設值為 .ssh/authorized_keys,所以在此需將 publick key 檔名改為 authorized_keys 才能讓 sshd 讀取到 publick key 值。

當檔案複製完成後,便要測試是否成功建立 Server_B 對 Server_A 中 ruixin 帳號的信任機制了。
請下達如下指令︰

Server_A% ssh ruixin@192.168.168.12

如果能夠直接登入,也就是說無需再輸入密碼即可直接進入 Server_B 來進行操作,便表示 Server_A 與 Server_B 的信任機制已成功建立。

舉一反三
Q1: 今有 Server_A (192.168.1.1)、Server_B (192.168.1.2)、Server_C (192.168.168.168) 三部主機,其中皆有使用者 ken 的帳號,如今 ken 想要在三部主機彼此建立 SSH 信任授權機制,該如何設置呢?

Q2: 承上題,ken 在 Server_B 中除了有 ken 的帳號外,亦有 john 的帳號,如今 ken 亦想要能夠在三部主機中,以 john 帳號利用 SSH 信任授權機制自動登入任一部主機,又該如何設置呢?


個性簽名

沒有最好,只有更好!!