スマートカードとして機能するgpg-keyがロードされたYubikey4があります。 gpg2 card-status
を実行すると、Shebang全体が表示され、すべてのサブキーが表示され、すべて問題ありません。
次に、gpg-agentを使用して、gpgキーを使用してリモートホストにSSH接続したいと思いました。 ~/.gnupg/gpg-agent.conf
に以下を追加しました
enable-ssh-support
pinentry-program /usr/bin/pinentry-curses
default-cache-ttl 60
また、.bashrcのSSH_AUTH_SOCK
を次のように設定します。
export SSH_AUTH_SOCK=~/.gnupg/S.gpg-agent.ssh
その後、マシンを再起動すると、キーが追加され、ssh-add -l
で表示されます。
4096 SHA256....... cardno: ..... (RSA)
しかし、リモートサーバーにSSHで接続しようとすると、ハングします。ssh -vvv
は、マシンが署名してキーを送信しようとしていることを通知しますが、エージェントは操作を拒否します。
次に、さまざまなソースを使用して作成したスクリプトを実行すると、すべて機能します。
killall gpg
export SSH_AUTH_SOCK=~/.gnupg/S.gpg-agent.ssh; gpg-agent --daemon --keet-tty --use-standard-socket --pinentry-program=/usr/bin/pinentry-curses
私はbashrcを使用してこれを実装し、deskopt-managerとユーザーsystemdタスクを使用して実行しようとしましたが無駄でした。
「myscript」を実行せずに、ログイン時にこれを自動的に開始する方法を誰かが理解するのを手伝ってもらえますか?
短い答え:
Rootとして実行:
$ echo enable-ssh-support >> ~/.gnupg/gpg-agent.conf
# editor /etc/X11/Xsession.options
... comment out "use-ssh-agent" ...
# aptitude purge libpam-gnome-keyring
デスクトップセッションからログアウトして再度ログインし、$ SSH_AUTH_SOCKがgpg-agentを指していることを確認します。
説明:
デフォルトでは、gpg-agentはSSHエージェントを有効にしません。これは、コマンドラインで--enable-ssh-support
を渡すか、上記のように構成ファイルに行を追加することによって行われます。
第二に、他のSSHエージェントの問題。 OpenSSHエージェントはデフォルトで起動し、x11-commonパッケージから/etc/X11/Xsession.d/90x11-common_ssh-agent
によってセットアップされます。 GNOMEを実行している場合は、GNOMEキーリングエージェントも実行されています。これらは両方ともGnuPGエージェントに干渉します。
OpenSSHエージェントを無効にするには、上記のように/etc/X11/Xsession.options
を編集します。
GNOMEキーリングエージェントを無効にすることは、潜在的にもう少し複雑です。 Xfceを使用して、libpam-gnome-keyringパッケージをアンインストールし、XfceがGNOMEサービスを開始しないようにすることができます(設定→セッションと起動→詳細→起動時にGNOMEサービスを起動します–チェックされている場合はチェックを外します)。
トラブルシューティング
それでもこのSSH_AUTH_SOCKがgpg-agentを指していない場合は、別のエージェントがGnuPGエージェントに干渉している可能性があります。 SSH_AGENT_PID変数には、エージェントプロセスのPIDが含まれている必要があります。これは、そのエージェントを特定するのに役立ちます。
スクリプトを/etc/profile.d
に配置します。実行可能ビットセット(chmod +x
)と、ファイルの拡張子が.sh
であることを確認してください。