MacからYubiKeyを使用してUbuntuへSSH接続する手順をまとめる。
環境
- macOS Mojave
- Yubikey 5C: Firmware 5.2.4
- yubico-piv-tool: 1.7.0
- Ubuntu 16.04.3 LTS
必要なツールを入れる
-
https://www.yubico.com/products/services-software/download/smart-card-drivers-tools/
- ダウンロードして適当な場所へ置き、PATHを通す
brew install opensc
YubikeyをMacに接続
挙動を確認。接続に失敗しているとエラーが出る。
yubico-piv-tool -a status
PIN, PUK, Management Keyを変更・登録
Yubikeyを安全に使用するためにPIN等を独自のものに変更する必要がある。
GUIのYubikey Managerを使うとやりやすい。
デフォルトPIN/PUK
- PIN: 123456
- PUK: 12345678
CLIでやる場合
# PIN
yubico-piv-tool -a change-pin -P 123456
# PUK
yubico-piv-tool -a change-puk -P 12345678
# Management Keyを生成(48桁の英数字。ほんとはもっとちゃんと作るべき)
date | sha256sum | cut -c 1-48
# Management Keyを登録
yubico-piv-tool -a set-mgm-key
公開鍵の準備
# 秘密鍵を生成しPEMファイルを書き出す
yubico-piv-tool -s 9a -a generate -o id_rsa.pem
# 自己証明書を作成
yubico-piv-tool -a verify-pin -a selfsign-certificate -s 9a -S "/CN=SSH key/" -i public.pem -o cert.pem
# 証明書をインポート(失敗する場合はGUIのYubikey Managerを使う)
yubico-piv-tool -a import-certificate -s 9a -i cert.pem
# OpenSSH形式の公開鍵を書き出す
ssh-keygen -D opensc-pkcs11.so > id_rsa.pub
その後、 id_rsa.pub
をサーバの authorized_keys
へ登録する。
SSH接続
以下で接続できることを確認。途中、先ほど登録したPINを入力する。
ssh -I opensc-pkcs11.so ubuntu@xx.xx.xx.xx
さらに、YubikeyをMacから外して、接続ができないことを確認しておく。
~/.ssh/config の設定
Host TargetHostName
HostName xx.xx.xx.xx
User ubuntu
PKCS11Provider opensc-pkcs11.so
備考
- YubiKeyで秘密鍵を生成することで、一切YubiKeyの外に秘密鍵を出さずに公開鍵認証によるSSHが実現可能
- MacがYubiKeyを認識しない場合は何度か抜き差しすると認識する場合がある