SSH

This guide explains how to prepare your SSH server and client for use with the Nitrokey. For configuring PuTTY, see this guide:

Nitrokey にはすでに PGP 鍵がインストールされており、ローカルの GnuPG キーリングはその鍵を知っているはずです。

クライアントでの準備

  • ~/.gnupg/gpg.conf に 'use-agent' が含まれていることを確認します。

  • ~/.gnupg/gpg-agent.conf に 'enable-ssh-support' を追加して gnupg-agent に ssh サポートを追加する。

  • ファイルがまだ存在しない場合は、作成すればよい。

  • 以下のコードを ~/.bashrc のどこかに追加してください (fish shell の場合は、` こちら <https://support.nitrokey.com/t/ssh-auth-with-fish-instead-of-bash/2206>`__)。

unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi
  • システムを再起動するか、pkill gpg-agent を試して、新しいコマンドラインを開き、すべてが設定されていることを確認する必要があります。

  • 問題がある場合は、最初の使用時に gpg2 --card-status を試して、gpg-agent が起動することを確認してください。

サーバーの準備

authorized_keysファイルを生成するには、次のいずれかを実行します。

gpg2 --export-ssh-key keyID >> ~/authorized_keys

どこで

keyID

は、Nitrokeyの認証に使用されるサブキーIDです。NitrokeyはすでにローカルのGnuPGキーリングで知られている必要があります。このファイルをリモートサーバのauthorized_keysに追加すれば、そのサーバにsshするときにパスフレーズではなくピンを要求されるようになります。

トラブルシューティング

パスワードを要求される場合は、次のことを確認してください。

echo $SSH_AUTH_SOCK

は '/run/user/1000/gnupg/S.gpg-agent.ssh' や '/home/username/.gnupg/.S.gpg-agent.ssh' などのように返されるようです。残念ながら、GnuPG は過去にいくつかの変更があったため、システムやGnuPG のバージョンによって実際の内容が異なる場合があります。システムによっては、この変数に複数のフォルダが保存されている場合もあります。SSH_AUTH_SOCK変数が正しくなるように、.bashrcにある上記のコードを適応させなければなりません。疑問がある場合は、 'SSH_AUTH_SOCK' を探してください。

man gpg-agent

をクリックすると、あなたのバージョン/システムに対応した実際のコードを見つけることができます。

パッケージマネージャで 'pinentry' プログラムがインストールされているかどうかを確認することができます。gpg-agent.conf で設定する必要があるかもしれません。gpg-agent を正しい TTY に指定する必要があるかもしれません。