SSH

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

active

inactive

inactive

active

inactive

active

active

inactive

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