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 的信任機制已成功建立。
Q2: 承上題,ken 在 Server_B 中除了有 ken 的帳號外,亦有 john 的帳號,如今 ken 亦想要能夠在三部主機中,以 john 帳號利用 SSH 信任授權機制自動登入任一部主機,又該如何設置呢?
沒有最好,只有更好!!