
私は、スマートカードとして機能する、GPG キーがロードされた Yubikey4 を持っています。gpg2 card-status
これを行うと、すべてのサブキーを表示するすべての情報が表示され、すべて正常です。
次に、gpg-agentを使用してgpgキーを使用してリモートホストにssh接続したいと考えました。~/.gnupg/gpg-agent.conf
enable-ssh-support
pinentry-program /usr/bin/pinentry-curses
default-cache-ttl 60
また、SSH_AUTH_SOCK
.bashrc を次のように設定しました。
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 タスクで実行しましたが、効果はありませんでした。
「自分のスクリプト」を実行せずに、ログイン時にこれを自動的に開始する方法を誰か教えてくれませんか?
答え1
短い答え :
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
コマンドラインを渡すか、上記のように構成ファイルに行を追加することによって行われます。
2 番目は、他の SSH エージェントの問題です。OpenSSH エージェントは、
/etc/X11/Xsession.d/90x11-common_ssh-agent
x11-common パッケージからセットアップされ、デフォルトで起動します。GNOME を実行している場合は、GNOME キーリング エージェントも実行されます。これらは両方とも、GnuPG エージェントに干渉します。
OpenSSH エージェントを無効にするには、/etc/X11/Xsession.options
上記のように編集します。
GNOME Keyringエージェントを無効にするのは、もう少し複雑になる可能性があります。Xfceを使用する場合、libpam-gnome-keyringパッケージをアンインストールし、XfceがGNOMEサービスを起動しないようにすることができます(設定 → セッションと起動 → 詳細設定 → 起動時にGNOMEサービスを起動– チェックされている場合はチェックを外します。
トラブルシューティング
それでも SSH_AUTH_SOCK がまだ gpg-agent を指していない場合は、別のエージェントがまだ GnuPG エージェントに干渉している可能性があります。SSH_AGENT_PID 変数にはエージェント プロセスの PID が含まれている必要があります。これにより、そのエージェントを正確に特定できます。
答え2
スクリプトを に配置します。実行ビットが ( ) に設定され、ファイルに拡張子が付いていること/etc/profile.d
を確認します。chmod +x
.sh