証明書とハードウェアトークンを含むSSH

証明書とハードウェアトークンを含むSSH

SSHキーをyubikeyに保存するため、ディスクに秘密鍵ファイルがありません。認証にOpenSSH証明書を使用するときに問題が発生しました。 ssh-agentを使用して証明書を渡すには、何らかの方法でエージェントに追加する必要があります。

privという秘密鍵とpriv-cert.pubという証明書がある場合、これは自動的に行われます。しかし、ファイルが存在しないため、証明書ファイルをエージェントに追加する方法が見つかりません。

これを行う方法を知っている人はいますか?

これに対するサポートがないようです。次の機能要求が見つかりました。https://bugzilla.mindrot.org/show_bug.cgi?id=2472

答え1

Yubikeyのドキュメントでは、ssh-agentここに証明書を追加できると言われています。https://developers.yubico.com/PIV/Guides/SSH_user_certificates.html

答え2

証明書とハードウェアトークンを含むSSH

この質問は古いかもしれませんが、今日のハードウェア認証はますます一般化されています。秘密鍵がssh-agentまたは同様の代替案で提供されている限り、以下はgpg-agent別のハードウェア鍵を使用する必要があります。

長い話を短く

ただ提供公開鍵-iファイルのコマンドパラメータssh

ssh -o CertificateFile=yubikey-cert.pub -i yubikey.pub [email protected]

段階的に

このガイドはSSHバージョンでテストされました。

OpenSSH_7.9p1 Raspbian-10+deb10u2+rpt1, OpenSSL 1.1.1n  15 Mar 2022

ハードウェアトークンに秘密鍵が生成されたとします。トークンから秘密鍵を検索してファイルに保存する方法はまったくありません。このキーは、ssh-agent共通の環境変数をエミュレートして提供するSSH_AUTH_SOCKソフトウェアドライバを介してのみアクセスできます。キーを使用するために、ドライバはハードウェアトークンと通信し、キーの使用はトークンのマイクロコントローラで行われます。

公開鍵の取得

トークンの秘密鍵のうち公開鍵が必要です。これキーのハッシュこれは次のように確認できます。

ssh-add -l

出力:

4096 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cardno:000000000000 (RSA)

これ公開鍵検索してファイルに保存できます。

ssh-add -L > yubikey.pub

出力:

cat yubikey.pub
ssh-rsa AAA.........XXX== cardno:000000000000 

公開鍵署名

これで公開鍵を使用して署名できます。認証機関秘密鍵、証明書の生成:

ssh-keygen -s ca.key -I "keyID" -n user -z 4711 yubikey.pub

これにより証明書ファイルが生成されますyubikey-cert.pub。もちろんそうですキーIDそしてTVシリーズ-z(パラメータ)を提供する必要があります。

証明書の使用

これで、証明書をコマンドで直接使用できるようになりますssh。暗黙のメカニズムに頼るのではなく、sshコマンドラインからキーと証明書を渡すことができます。これ秘密鍵もちろんそこにいる必要がありますssh-agent

ssh -o CertificateFile=yubikey-cert.pub -i yubikey.pub [email protected]

トラブルシューティングのために、-vSSHスイッチを使用してどのキーと証明書が使用されるかについての詳細情報を入手できます。

ssh -v -o CertificateFile=yubikey-cert.pub -i yubikey.pub [email protected]

出力(簡潔さのために切り捨て):

...
debug1: Will attempt key: yubikey-cert.pub RSA-CERT SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx explicit
debug1: Will attempt key: yubikey.pub RSA SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx explicit agent
debug1: Will attempt key: ...
...
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: yubikey-cert.pub RSA-CERT SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx explicit
debug1: Server accepts key: yubikey-cert.pub RSA-CERT SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx explicit
debug1: Authentication succeeded (publickey).
...

SSH証明書の完全なチュートリアルは、この回答の範囲外です。詳細は以下で確認できます。OpenhSSHレシピ

関連情報