使用YubiKey登陸Azure Linux VM(3種方式)

三種方式分別為FIDO、CAPI、PKCS
首先參考此處文章,下載YubiKey Manager,先設定好FIDO的PIN密碼
使用Putty產生本地的SSH 金鑰
Putty要下載特殊的版本,官方的版本目前還不支援,特規版本下載網址為:
https://github.com/NoMoreFood/putty-cac
一、使用FIDO方式驗證
定位到Connection—SSH—Certificate—FIDO Tools,下拉Key Algorithm,選擇ssh-ed25519,Application Name可以根據自己的需要填寫容易辨識的名字,但必須是以ssh:為開頭的,本文就選擇預設的ssh:,然後點擊Create Key…


此時輸入FIDO中設定的的PIN密碼
通過驗證後,要觸摸YubiKey,等待觸摸的時候YubiKey會是亮燈的狀態。


SSH金鑰已建立完畢
定位到Certificate,點擊Copy To Clipboard
將複製的公開金鑰另外存好,這個之後需要添加到Linux的主機當中,至於私鑰則是存在YubiKey當中,此時如果有其他的備用YubiKey,就可以重複一次,Application Name選擇其他的名字,產生新的公鑰,而對應的私鑰存放在備用YubiKey,而添加到Linux主機中的公鑰就會是2把。
在Azure建立Linux虛擬機的步驟就略過。
因為建立的Linux的虛擬機也是使用SSH驗證的方式,所以在~/.ssh的路徑下會有authorized_keys的檔案,如果是使用密碼登入的,可能不會有這個檔案,則需要建立一個。
demo@demo:~/.ssh$ vim authorized_keys
我們使用vim來編輯authorized_keys,並在結尾添加前面建立的SSH公鑰,切記不要刪除到原有的公鑰。

預設進去為一般模式,按Shift+4定位到最後一個字符的位置,按i進入編輯模式,開始編輯文字,此時發現在左下角狀態列中會出現-INSERT- 的字樣,按下方向鍵右,定位到最後一個字符後面的位置,按下Enter回車另起一行,複製好新的公鑰,然後到SSH中,貼到最後,然後按下ESC,退出編輯模式,此時左下角狀態列中的 -INSERT-會消失,確定操作無誤後按ZZ保存退出。
上述針對Linux的操作可以在任意的SSH連線程式中進行,下面是使用FIDO驗證連線,則又需要使用文章開始的Putty版本。
輸入帳號後,程式就會彈出驗證的視窗,需要用手去觸摸YubiKey

就登入成功了
如果是要到新的電腦上使用FIDO登入,要點擊Set Fido Key…從YubiKey導入驗證,確認下方紅色箭頭的位置會顯示為FIDO的Application Name才可以。

小叮嚀:
1.如果手動建立了~/.ssh/authorized_keys,也添加了公鑰,最後還是無法登入,則需要看一下權限問題,username修改為實際的名字
chmod -R go= ~/.ssh
chown -R username:username ~/.ssh
2.也不是所有的linux的版本預設都有支援FIDO的驗證方式,比較新的版本才有支援,主要是openssh的版本好像要8.2以上,本文使用的debian11已經預設支援了。
3.那是否Azure開始建立VM的時候就選擇使用FIDO的SSH公鑰要建立呢?現階段是沒有辦法的,Azure 目前支援 SSH 通訊協定 2 (SSH-2) RSA 公開/私密金鑰組,最小長度為 2048 位元。 不支援其他金鑰格式,例如 ED25519 和 ECDSA。
https://learn.microsoft.com/zh-tw/azure/virtual-machines/linux/mac-create-ssh-keys#supported-ssh-key-formats

繼續閱讀方式二:使用CAPI