
私は最近ユビコのセキュリティキー(FIDO / U2F対応)このキーを使用してSSH認証をテストしています。
OpenSSH 8.2リリースノート(OpenSSH 8.1以降の変更セクション)の引用:
OpenSSHでは、新しい公開鍵タイプ「ecdsa-sk」と「ed25519-sk」がFIDOデバイスをサポートしています[...]
ecdsa-sk
この(テスト)キーを提供せずにキーを生成したパスワードを使用した後、通常どおりリモートホスト上ssh-keygen -t ecdsa-sk
のファイルid_ecdsa_sk.pub
に内容を追加しました。${HOME}/.ssh/authorized_keys
リモートホストにSSH接続しようとすると、何も表示されませんが、セキュリティキーデバイスが点滅し、タッチを入力するように求められます。デバイスに触れるとすぐにSSH接続が確立されます。
一部のウェブ検索後(結果の例)次のようなメッセージが表示されなければならないと思います。
Confirm user presence for key ECDSA-SK SHA256:blah-blah-blah
この問題をどのように解決できますか?
でも同じ動作が観察されますed25519-sk
。
環境情報
- ローカルおよびリモートオペレーティングシステム:
Linux Mint 20 Cinnamon
- ローカルおよびリモートOpenSSH:
OpenSSH_8.2p1 Ubuntu-4ubuntu0.1, OpenSSL 1.1.1f 31 Mar 2020
答え1
SSHエージェントはssh
それ自体ではなくセキュリティキーと対話します。これは、エージェントが端末に接続されていないことを意味します。つまり、Mint Cinnamonでは、GNOME Keyringが端末として使用されます。 SSHエージェントはデフォルトで適用されますが、これはssh-agent
。
このメッセージを表示するにはいくつかのオプションがあります。
SSH-askpassの使用
Xを使用している場合、エージェントはssh-askpass
ポップアップウィンドウを介してメッセージを表示するために使用できます。パスワード(したがって名前)を求めるために最も頻繁に使用されますが、GNOME Keyringとssh-agent
。 MintなどのDebianベースのディストリビューションでは、次のように簡単にする必要がありますapt install ssh-askpass-gnome
。 (more-plainなどの他のバリエーションもありますssh-askpass
。)
エージェントからキーを削除する
端末からメッセージを受信するには、エージェントが最初に認証を試みてから、その主キー名に戻ってssh
メッセージを表示できます。id_ecdsa_sk
ssh
~/.ssh
GNOMEキーリングを使用すると、すべてのキーが~/.ssh
自動的にエージェントに追加されるため、キーを削除するにはキーをディレクトリから移動する必要があります。
mkdir ~/.ssh/noauto
mv ~/.ssh/id_ecdsa_sk* ~/.ssh/noauto/
次に、このキーを使用するホストのIdentityFile
オプションを追加します。~/.ssh/config
Host remotename
IdentityFile ~/.ssh/noauto/id_ecdsa_sk
GNOMEキーリングの代わりに使用する場合は、ssh-agent
キーを別のディレクトリに移動するのではなく、エージェントからキーを削除できますssh-add -d ~/.ssh/id_ecdsa_sk
。
またはを使用ssh-agent
してオプションを簡単に渡すことができる場合は、空の文字列にssh-agent
設定できます。つまり、実行するとすべての PKCS#11 および FIDO ベースのキーをエージェントにロードすることが効果的にブラックリストに追加されます。-P
ssh-agent -P ""
セキュリティキーベースのSSHキーとクライアント側とサーバー側の両方に設定された既存のSSHキーがある場合は、セキュリティキーの代わりに既存のキーを使用して認証できますid_ecdsa_sk
。ssh-agent
キー。エージェントからキーを削除すると、エージェント転送(ssh -A
)があるリモートホストでキーを使用できないことにもなります。