Mac OSで、ssh-agentにYubikeyの鍵を登録したいということがあったので、備忘で残しておく(すでにOpenSCとかはインストール済で、ssh -Iでログインができる状態と仮定)。 ssh-agentでYubikeyの鍵を利用する場合、通常であればssh-agent起動後、以下のようなコマンドを実行すればいい。

ssh-add -s /usr/local/lib/opensc-pkcs11.so

が、以下のようなエラーが出て追加できないパターンが多い。

$ ssh-add -s /usr/local/lib/opensc-pkcs11.so
Enter passphrase for PKCS#11:
Could not add card "/usr/local/lib/opensc-pkcs11.so": agent refused operation

これは、ssh-agentを起動する際にpkcs11のwhitelistにopenscのPATHが入ってないことが原因。 なので、以下のようにしてssh-agentを起動する必要がある。なお、PATHはopensc-pkcs11.soの実体があるPATHにする必要があるので注意(インストール方法にもよるけど、大体はシンボリックリンクになっているはず)。 複数のディレクトリをwhitelistに入れる場合、カンマ区切りで指定することができる。

ssh-agent -P "/path/to/pkcs11_lib_dir/*,/path/to/sub_dir/*"

これで、ssh-agentにOpenSCから読み込んだ鍵を登録することができる。