私はこの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 各中間システムでクライアント構成を調整するだけです。私はそう思った。
エージェント転送が複数のホップを介して動作するようにするには、エージェント転送が行われるように、各中間システムでクライアント構成を調整する必要があります。
これは、/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"