web-dev-qa-db-ja.com

特定のサーバーのsshキーとしてgpgキーの使用を強制します

Ssh-agentとしてGPGを使用するようにsshを構成しましたが、~/.sshフォルダーを削除すると、gpgキーを使用してサーバーに正常にsshできます。ただし、私の~/.sshフォルダーには12を超える異なるsshキーがあり、そこにあるときにsshを実行しようとすると、sshクライアントが以前にディレクトリ内のすべての秘密キーを提供しているため、アクセス許可拒否エラーが発生します。 gpg ssh-agentでキーを試します。

通常のsshキーでは、~/.ssh/configファイルでIdentityFile構成を使用するだけですが、自分のIDがgpg cardnoであるため、これを行うことはできません。 sshがエージェントよりもキーファイルを優先する理由に戸惑います。 sshにファイルの代わりにエージェントを使用させる方法はありますか?または、さらに良いことに、特定のサーバーでgpgキーを使用する必要があることを~/.ssh/configファイルで指定する方法はありますか?

ssh-agentが実行されておらず、gpg-agentが実行されていること、およびssh-add -Lがgpgキーが存在すること、および他の単一のsshスタイルの秘密キーを示していることを確認しました。

4
Mike Dacre

私の身元はgpgcardnoであるため、それはできません。

gnupgが提供するIDを使用しても、 can IdentityFileおよびIdentitiesOnlyを使用できます。

  • カードが存在する場合は、エージェントから公開鍵をエクスポートします。

    $ ssh-add -L | grep "cardno:.*789$" | tee ~/.ssh/smartcard.pub
    ssh-rsa AAAA[..]== cardno:023456000789
    
  • 関連付けていないが関連付けられているキーを覚えている場合は、gnupgからエクスポートします。

    $ gpg2 --export-ssh-key [email protected] | tee ~/.ssh/smartcard.pub
    ssh-rsa AAAA[..]== openpgp:0xDEADBEEF
    

次に、そのエクスポートを使用して正しいキーを識別するようにsshに指示します。

Host *.Host.example
    IdentityFile ~/.ssh/smartcard.pub
    IdentitiesOnly yes
    PasswordAuthentication no
    PubkeyAuthentication yes

これにより、gnupgによって正しいスマートカードが検出されたときに、期待どおりに1回だけログインが試行されます。

$ ssh -v smart.Host.example
[..]
debug1: Next authentication method: publickey
debug1: Offering public key: /home/home/.ssh/smartcard.pub RSA SHA256:a1337[..] explicit

残念ながら、 gnupg ssh agent は挿入を要求しないため、カードを挿入し忘れると、 かなり役に立たない出力 が表示されます gpg agent のような正しいカードが行います。これは厄介ですが、実際の使用には影響しません。

3
anx

man ssh_config IdentityFileについて:

さらに、認証エージェントによって表されるすべてのIDが認証に使用されます。

だからあなたが設定するIdentityFile /dev/null、その1つの認証が失敗すると、sshはエージェントでキーの試行に進みます。

3
Andrew Schulman

キーがスマートカードなどのpkcs11対応ハードウェアに保存されている場合は、sshを直接使用してアクセスできます。

[〜#〜] cli [〜#〜]

 -I pkcs11
         Specify the PKCS#11 shared library ssh should use to communicate with a PKCS#11 token providing the user's private RSA key.

したがって、use ssh -I /path/to/opensc-pkcs11.soを使用できます。opensc-pkcs11.soはスマートカードライブラリです。

エージェント

Ssh-agentを使用したい場合は、ssh-add -s /path/to/opensc-pkcs11.soを使用して、スマートカードでバックアップされたキーを追加することもできます。

構成

そして最後に、設定ファイルを使用したい場合は、PKCS11デバイスを指定してPKCS11Providerを使用できます。

 PKCS11Provider
         Specifies which PKCS#11 provider to use.  The argument to this keyword is the PKCS#11 shared library ssh(1) should use to communi-
         cate with a PKCS#11 token providing the user's private RSA key.
0
Peter