2014年10月17日 星期五

SSH「自動認證機制」之改進 - 快速複製密鑰

在前文『SSH 的「自動認證機制」 - 使用 DSA 密鑰』和『SSH 的「自動認證機制」 - 使用 ECDSA 密鑰』中,要將產生的公鑰複製到另一個電腦的『自動認證』公鑰檔案中,需要經過幾個步驟的操作。
  一直都有想找到更方便、快速命令的想法。果然,從網路上查到高手的解答,利用這個機會,分析一下這個複合命令的細節。就用以下這個複製 DSA 密鑰的命令
[SiB@Celeron-D ~]$ cat ~/.ssh/id_dsa.pub | ssh 192.168.10.15 -p 5566 -l SiB2 "cat >> ~/.ssh/authorized_keys"
或複製 ECDSA 密鑰的命令來解析
[SiB@Celeron-D ~]$ cat ~/.ssh/id_ecdsa.pub | ssh 192.168.10.15 -p 5566 -l SiB2 "cat >> ~/.ssh/authorized_keys"
這個複合命令可先分為兩個部分,
  • 第一個部份是『cat ~/.ssh/id_dsa.pub』是將以『ssh-keygen』產生的密鑰之公鑰輸出至『標準輸出(standard output)』,一般是指螢幕。
  • 『 | 』(pipeline,管線)是將前一個命令的『標準輸出』導至下一個命令的『標準輸入』。
  • 第二個命令是 SSH 的進階用法,又可拆分為兩個命令分別在不同電腦執行:
    • 以 SSH 連線至 192.168.10.15,埠號為 5566,登入帳號為 SiB2,並在登入後執行『cat >> ~/.ssh/authorized_keys』這個命令。
    • 在 cat 後並無檔案時,表示將從『管線』傳過來的資料當做『標準輸入』,再將之輸出至『標準輸出』
    • 其中『 >> 』是將『標準輸出』以『附加』的方式,加在檔案後面。
    • 所以命令『cat >> ~/.ssh/authorized_keys』可將傳過來的公鑰(在標準輸出)附加到認證檔的末端。
整個複合命令就是:將『本地電腦』的公鑰,經由『管線』傳至另一台電腦,再將之附加在認證檔之末端。

已測試版本:

  • Fedora: 19, 20

參考資料:

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)