這裡告訴你 ssh-keygen 在建立金鑰時所產生的 randomart 是做什麼用的。

一般在使用 OpenSSH 的 ssh-keygen 指令建立認證用的金鑰時,建立完成之後會顯示一個 randomart,這像這樣:

但是你可能搞不清楚這個圖到底是作什麼用的。


這個 randomart 其實只是用來讓人比較容易辨識這個金鑰而已,舊版的 OpenSSH 是使用十六進位的方式來顯示金鑰的 fingerprint,就像這樣
9a:69:c2:f3:af:1d:92:3f:ff:1c:51:5c:76:b5:87:73
而這種方式對於人眼而言比較難以辨識,所以現在就多了這種 randomart 的方式,讓人可以恨快的辨別不同的金鑰,像下面這些不同的金鑰就可以很快辨別它們是不同的:

randomart

一個實際的例子就是在進行 SSH 連線時,以 randomart 的方式顯示 fingerprint,讓使用者方便確認金鑰是否有更動。若要讓 ssh 以 randomart 的方式顯示 fingerprint,可以加上 -o VisualHostKey=yes 參數,例如:

ssh -o VisualHostKey=yes seal@myhost.com

這樣就會顯示該 SSH 伺服器的 randomart:

ssh-key-randomart

但是其實在一般的狀況可能也很少會需要去仔細檢查這個 randomart,因為這些金鑰在第一次連線之後,應該都會自動儲存在 ~/.ssh/known_hosts 這個檔案中,而之後再進行相同 SSH 伺服器的連線時,也會自動檢查金鑰是否有被更動過。

只有在設定不儲存伺服器的金鑰或是時常在新的電腦中開啟 SSH 連線的狀況下,才會需要用人眼的方式確認該金鑰是不是平常所使用的那個,如果你發現這張圖突然跟平常的不一樣,大概只有兩種狀況,一個是你的 SSH 伺服器有重新安裝或是更換金鑰,如果沒有做過這些動作,那你就要小心是不是遭受到中間人攻擊(Man-in-the-middle)。

參考資料:superuser