Ubuntu 16.04 で gpg-agent を適切に起動する方法

Ubuntu 16.04 で gpg-agent を適切に起動する方法

私は、スマートカードとして機能する、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-agentx11-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 が含まれている必要があります。これにより、そのエージェントを正確に特定できます。

ソース : 私の完璧な GnuPG / SSH エージェントのセットアップ

答え2

スクリプトを に配置します。実行ビットが ( ) に設定され、ファイルに拡張子が付いていること/etc/profile.dを確認します。chmod +x.sh

関連情報