SSHによるサーバー管理#

Nitrokeyを使用するために、SSHサーバーとクライアントを準備する方法について説明します。

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 に指定する必要があるかもしれません。