有新的加密演算法,當然就要使用它,以下是將前文『SSH 的「自動認證機制」 - 使用 DSA 密鑰』修改,使適用於「ECDSA」。為節省篇幅重覆部份只保留命令,而詳細說明留在前文,請讀者自行前往參考。
一、確認主機的作業系統是否支援「ECDSA」
根據 OpenSSH 5.7 的發佈註記所載,從這一版開始支援「ECDSA」;但是,透過 OpenSSH 提拱 SSH 服務的系統,並不一定採用新版。因此,使用者要確認你的系統是否支援「ECDSA」光看版本並不夠。筆者採用一個簡單的測試方法,就是直接執行命令,
若會開始「公、私鑰」產生程序則表示該系統支援「ECDSA」。上例中,將程序中斷是因它在伺服器執行,該命令只是用以測試「ECDSA」的支援而已。[SiB@Core-i7 ~]$ ssh-keygen -t ecdsaGenerating public/private ECDSA key pair.
Enter file in which to save the key (/home/SiB/.ssh/id_ecdsa): ^C
[SiB@Core-i7 ~]$
在第二個例子中,出現『unknown key type ECDSA』,表示該系統並不支援「ECDSA」。必須連線的兩部主機皆支援「ECDSA」才可以使用「ECDSA」的「自動驗證」機制。[SiB@Celeron-D ~]$ ssh-keygen -t ecdsaunknown key type ECDSA
[SiB@Celeron-D ~]$
必須連線的兩部主機皆支援「ECDSA」才可以使用「ECDSA」的「自動驗證」機制
二、建立「自動認證」機制的程序
1. 建立「公鑰」「私鑰」
[SiB@Celeron-D ~]$ ssh-keygen -t ecdsa上例過程中的詢問是否加入密語『Enter passphrase (empty for no passphrase):』請參考前文說明。
2. 上傳至「伺服器」
[SiB@Celeron-D ~]$ scp -P 5566 ~/.ssh/id_ecdsa.pub SiB@192.168.10.15:.ssh/newkey上例中假設 5566 是「伺服器」的 SSH 埠號,『~/.ssh/id_ecdsa.pub』是本地的 dsa「公鑰」,而『SiB@192.168.10.15』是指複製目的端的電腦 IP 為 192.168.10.15、登入帳號為 SiB,『:』後的『.ssh/newkey』是目的端電腦的「公鑰」暫存檔。
3. 以平常方式連線至「伺服器」
[SiB@Celeron-D ~]$ ssh 192.168.10.15 -p 5566 -l SiB上例中的 192.168.10.15 及 5566 分別是「伺服器」的 IP 網址 及 SSH 埠號,而登入帳號為 SiB。
SiB@192.168.10.15's password:
Last login: Thu Apr 25 13:28:01 2014 from 192.168.10.13
[SiB@Core-i7 ~]$
4. 將「公錀」附加到「認證金錀」檔
[SiB@Core-i7 ~]$ cd .ssh上例中,第一個命令是將「目前工作目錄」更改為『~/.ssh/』,而第二個命令是將剛才上傳的「公鑰」附加(append)到『authorized_keys』這個檔案的尾巴。
[SiB@Core-i7 .ssh]$ cat newkey >> authorized_keys
注意:若『authorized_keys』這個檔案不存在,則第二個命令可以改為
[SiB@Core-i7 .ssh]$ mv newkey authorized_keys
5. 更換「公鑰」
若是因「本地電腦」重灌作業系統,或是因為安全理由,要更換「公鑰」時,可以到「伺服器」端,修改你的「已認證金鑰」檔。使用你熟悉的「純文字編輯器」,例:gedit 或 vim 編輯這個檔案。
每一個「DSA 金鑰」都是以『ssh-dss』為開始,而「ECDSA 金鑰」則是以『ecdsa-sha2-nistp256』為開始,並以『帳號名@本地電腦名稱』或『帳號名@本地電腦 IP 網址』為結束。將這個金鑰刪除後,再重新附加入新的金鑰即可。
已測試版本:
- Fedora: 14, 20
沒有留言:
張貼留言
感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)