Posted at

MacOS で opensc-pkcs11.so がうまくいかないとき

MacOS を再インストールして Yubikey が使えなくなってハマったのでメモ

brew で opensc をインストール

brew install opensc

opensc をインストールして Yubikey を読み込みSSHをしようとして下記のようなエラーがでた

# ssh-agent に登録

$ 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

これは、 pkcs モジュールの読み込み先ホワイトリストに入ってないから拒否されているようだ。

下記の手順で無事に使えるようになったので残しとく


手順


  • 再起動して


  • Ctrl + R でリカバリーモードにする

  • 上の方のメニューバーより「Utilitys」=> 「Terminal」を起動


  • コマンドを実行

    csrutil disable



  • 再起動



  • ファイルを編集

    sudo nano /System/Library/LaunchAgents/com.openssh.ssh-agent.plist

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    <key>Label</key>
    <string>com.openssh.ssh-agent</string>
    <key>ProgramArguments</key>
    <array>
    <string>/usr/bin/ssh-agent</string>
    <string>-l</string>
    <string>-P</string>
    <string>/usr/lib/*,/usr/local/lib/*,/usr/local/Cellar/opensc/*/lib/*</string>
    </array>
    <key>Sockets</key>
    <dict>
    <key>Listeners</key>
    <dict>
    <key>SecureSocketWithKey</key>
    <string>SSH_AUTH_SOCK</string>
    </dict>
    </dict>
    <key>EnableTransactions</key>
    <true/>
    </dict>
    </plist>



ここの部分を追記した

                    <string>-P</string>

<string>/usr/lib/*,/usr/local/lib/*,/usr/local/Cellar/opensc/*/lib/*</string>


  • 再起動

  • ssh-add してちゃんと認識するか確認する


確認後


  • 再起動


  • Ctrl + R でリカバリーモードにする

  • 上の方のメニューバーより「Utilitys」=> 「Terminal」を起動


  • コマンドを実行

    csrutil enable



  • 完了



参考