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