4.5. スマートカード認証で SSH アクセスの設定

SSH 接続には認証が必要です。パスワードまたは証明書を使用できます。本セクションでは、以下を説明します。

  • スマートカードに保存されている証明書を使用して認証を有効にするのに必要な設定
  • authselect ツールを使用した削除設定のロック

削除時にロックを設定すると、スマートカードの削除後に強制的にログアウトされます。

authselect を使用したスマートカードの設定の詳細は「authselect でスマートカードの設定」を参照してください。

前提条件

  • スマートカードに、証明書と秘密鍵が含まれている。
  • カードがリーダーに挿入され、コンピューターに接続されている。
  • SSSD がインストールされ、設定されている。
  • ユーザー名は、証明書の SUBJECT の CN (Common Name) または UID (User ID) と一致します。
  • pcscd サービスがローカルマシンで実行している。

    詳細は「スマートカードを管理および使用するツールのインストール」を参照してください。

手順

  1. スマートカード認証を使用するユーザーのホームディレクトリーで、SSH キー用の新しいディレクトリーを作成します。

    # mkdir /home/example.user/.ssh
  2. opensc ライブラリーで ssh-keygen -D コマンドを実行して、スマートカードの秘密鍵とペアの既存の公開鍵を取得し、そのユーザーの SSH キーディレクトリーの authorized_keys 一覧に追加し、スマートカード認証を使用した SSH アクセスを有効にします。

    # ssh-keygen -D /usr/lib64/pkcs11/opensc-pkcs11.so >> ~example.user/.ssh/authorized_keys
  3. SSH では、/.ssh ディレクトリーおよび authorized_keys ファイルのアクセス権が必要です。アクセス権を設定または変更するには、以下を入力します。

    # chown -R example.user:example.user ~example.user/.ssh/
    # chmod 700 ~example.user/.ssh/
    # chmod 600 ~example.user/.ssh/authorized_keys
  4. 必要に応じて、キーを表示します。

    # cat ~example.user/.ssh/authorized_keys

    端末にキーが表示されます。

  5. /etc/sssd/sssd.conf ファイルでスマートカード認証が有効になっていることを確認します。

    [pam] セクションで、pam 証明書認証モジュールである pam_cert_auth = True を有効にします。

    sssd.conf ファイルがまだ作成されていない場合は、以下のスクリプトをコマンドラインにコピーして、最小限の機能設定を作成できます。

    # cat > /etc/sssd/sssd.conf <<EOF
    [sssd]
    services = nss, pam
    domains = shadowutils
    
    [nss]
    
    [pam]
    pam_cert_auth = True
    
    [domain/shadowutils]
    id_provider = files
    EOF
  6. SSH キーを使用するには、authselect コマンドで認証を設定します。

    # authselect select sssd with-smartcard with-smartcard-lock-on-removal --force

これで、次のコマンドを実行して SSH アクセスを確認できます。

# ssh -I /usr/lib64/opensc-pkcs11.so -l example.user localhost hostname

設定に成功すると、スマートカードの PIN を入力するように求められます。

設定がローカルで機能するようになりました。これで、公開鍵をコピーして、SSH を使用するすべてのサーバーにある authorized_keys ファイルに配布できます。