SSH ForwardAgentの複数のホップ


15

過去2時間、次の問題の解決策を探していましたが、うまくいきませんでした。

開発:

サーバーに接続するために公開鍵認証を使用しています。公開/秘密鍵を管理する必要がないように、ssh-agent転送を使用します。

私はサーバーを持っているとしましょうA, B and C

から接続する場合、これは非常にうまく機能しLOCAL ---> A ---> Bます。

私もそうすればそれは非常にうまく機能しますLOCAL ---> A ---> C

今、試してみるとLOCAL ---> A ---> B ---> C、SSHからに接続できませんB to C

注目に値する:私は流動性としてサーバーAに接続しますが、ルートとしてサーバーBに接続します。流動性としてサーバーBに接続すると問題は解決しますが、これは私にとって選択肢ではありません。

ユーザーの推奨に従って、ssh -A毎回使用して、エージェント転送が有効になっていることを確認します。

私は同じような質問を1つ見つけましたが、ここに答えがありません:複数のホップを介してssh-agent転送を連鎖させることは可能ですか?

ここの@Zoredacheによると:https ://serverfault.com/a/561576/45671 各中間システムでクライアント構成を調整するだけです。私はそれを信じた。


SSHエージェントを転送する代わりに、ProxyCommandホッピング(ここで説明)の使用を検討してください。あなたのアプローチでは、チェーン内のすべてのマシンが秘密鍵を(ab)使用できるため、それらを信頼する必要があります。私もProxyCommandに好きなので、既知のホストチェックに多くの、より良いアプローチがローカルに実行され、そしてあなたがCに接続するには、コマンドに単一を使用することができますので、さらに、あなたのSSHの設定でチェーンを設定することができます
gertvdijk

残念ながら、proxyCommandは使用できません。セキュリティの考慮事項にもかかわらず、私は本当にforwardAgentを使用する必要があります。
流動性

@liquidity proxyCommandを使用したくないのはなぜですか。私は同じ問題を抱えており、proxyCommandの方が安全だと理解しています。だから私はどちらを使うべきかを考えている
grep

回答:


13

エージェント転送を複数のホップで機能させるには、各中間システムでクライアント構成を調整して、エージェント転送を行う必要があります。

これが設定されていることを確認するのと同じくらい簡単かもしれません/etc/ssh/ssh_config。ただし、クライアントごとの構成がある~/.ssh/config場合は、それらの設定も調整する必要があります。

Host *
    ForwardAgent yes

-vオプションを追加するだけで、エージェント転送が発生したか、エラーが発生したかを確認できます。

$ ssh -v issc@server1
OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /home/zoredache/.ssh/config
...
debug1: Requesting authentication agent forwarding.
debug1: Sending environment.
Linux server1 3.11-0.bpo.2-amd64 #1 SMP Debian 3.11.8-1~bpo70+1 (2013-11-21) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Dec 15 20:39:44 2013 from 10.2.4.243
issc@server1:~$

また、有効な環境変数が設定されていることを確認してください。

issc@server1:~$ export | grep SSH_AUTH
declare -x SSH_AUTH_SOCK="/tmp/ssh-7VejOmKtNv/agent.57943"

4
ssh_configまたは〜.ssh / configオプションに代わる迅速でダーティな代替手段として、sshの-Aフラグに言及する価値があります。-A [e]認証エージェント接続の転送を可能にします。
dmourati

1
各ステップで、ssh-add -lssh エージェントを介して取得できると考えるキーをリストするために使用できます。各接続で転送していることを確認してください!
MikeyB

ありがとう!また、すべてが正しく行われていれば、最後のサーバーでssh-agentを手動で起動する必要がないことに注意してください。Requesting authentication agent forwarding.デバッグ出力に行が表示されると、自動的に開始されます。経由で.bash_profilessh-agentを起動しようとした場合は、そこから削除してください。そうしないと、エージェントはIDなしで再び起動します。
2upmedia
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.