私はこのガイドと答えに従おうとしています。
- https://wiki.gnupg.org/AgentForwarding
- https://superuser.com/questions/161973/how-can-i-forward-a-gpg-key-via-ssh-agent
- https://gist.github.com/TimJDFletcher/85fafd023c81aabfad57454111c1564d
そしてそれをするために私が見つけることができる他のものは:
- macOSからUbuntu 18.04へのSSH
gpg --decrypt
リモートシステムで実行できるようにローカルgpgエージェントを渡します。
リモートコンピュータの公開鍵を--export
編集しました。--import
リモートgpgは、にあるプロキシソケットと
/run/user/1001/gnupg/S.gpg-agent
にある追加のソケットについて報告します/run/user/1001/gnupg/S.gpg-agent.extra
。
しかしssh -v -R /run/user/1001/gnupg/S.gpg-agent:/Users/rasmus/.gnupg/S.gpg-agent.extra -l rasmus <remote-host>
警告しよう
警告:リスニングパス/run/user/1001/gnupg/S.gpg-agentへのリモートポート転送に失敗しました。
これは、systemdがすでにリモートソケットを所有しているためです。
$ sudo journalctl -xe
…
Mar 11 15:06:21 pact-cube sshd[4972]: error: bind: Address already in use
Mar 11 15:06:21 pact-cube sshd[4972]: error: unix_listener: cannot bind to path: /run/user/1001/gnupg/S.gpg-agent
macOSからUbuntu 18.04にgpgエージェントを渡すにはどうすればよいですか?両方のシステムで必要なGPGとSSHのバージョンを使用してください。
ベストアンサー1
gpg配信機能を取得する最も簡単な方法は、まずsystemdにこれらのソケット干渉を停止するように指示することです。 sudo権限なしで現在のユーザーに対してリモート側で次のコマンドを実行すると、これを行うことができます。
systemctl --user 'disable' 'gpg-agent.socket'
systemctl --user 'disable' 'gpg-agent-extra.socket'
systemctl --user 'stop' 'gpg-agent.socket'
systemctl --user 'stop' 'gpg-agent-extra.socket'
不要な問題のあるコンポーネントを取り除いた後の次のステップは、コンセントを配置する場所を決定することです。実行すると簡単に完了しますgpgconf --list-dirs
。 (これらのソケットディレクトリは次のようにハードコードされています。メインディレクトリ.c。 gnupgをパッチして再コンパイルしないと設定できません。 )
必要なのは、クライアントソケットがサーバーに渡され、誤動作する第三者がこれを維持することだけです。 SSH構成ブロックは、次のコマンドを実行して生成できます。 (update $remote)
remote='host.example.com'
local_sock=$( gpgconf --list-dirs | sed -n 's/agent-extra-socket://p' )
remote_sock=$( ssh $remote "gpgconf --list-dirs" | sed -n 's/agent-socket://p' )
echo "Host $remote\n RemoteForward $remote_sock $local_sock"
通常、次のような結果が生成されます。 (数値uid:sは間違いなく異なる場合があります。)
Host host.example.com
RemoteForward /run/user/1/gnupg/S.gpg-agent /run/user/2/gnupg/S.gpg-agent.extra
systemdが退去されても、これらのパーティーに表示される傾向がある別の招待されていないゲストがいます。これはリモートシステムのSSHエージェントです。私たちが望む唯一のものはローカルプロキシなので、リモートで実行されているプロキシを終了してソケット配信をブロックするのをやめる必要があります。
ssh $remote "pkill gpg-agent"
gpg
プロキシ転送を有効にせずに使用しようとするたびに、最後の手順が必要になることがあります。ソケットが利用できないときにエラーメッセージで終了するようにgpg:s設定が更新されない限り、どのキーでも信頼できない愚かなリモートエージェントを起動しようとするものではありません。これは次の方法で行うことができます。
ssh $remote "echo 'no-autostart' >> .gnupg/gpg.conf"
要約すると、次のようにssh -v
話す必要があります。リモート配信の成功...。