マルチホップソックスプロキシを実装する方法は?

マルチホップソックスプロキシを実装する方法は?

私からSOCKSによるjvisualVMの使用に関する推奨事項。しかし、やや複雑なトポロジがあります。

ラップトップから起動し、監視したいコンピュータに到達するには、2つの中間ホストを通過する必要があります。

LaptopAtHome -> HostAtWork -> AWS-Bastion -> ThingToObserve

ssh-addを使用して、これらのホップを作成するために必要なキーを処理できます。 AWS-Bastion に SSH 秘密鍵を残してはいけません。次のように、これらすべてをどのように設定しますか?

ssh -v -D 9696 thingtobserve.example.com

私のラップトップから反対側にワームホールを開くか?

また、最初のホップには2番目と3番目のホップとは異なる秘密鍵を使用する必要があります。 ssh-addを使用して両方のキーを起動ホストにロードしました。

いくつかの研究によると、次のような試みがなされた。

#!/bin/sh

noknown="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"

ssh -A -t -t -v -L9999:localhost:9932 first ssh -A $noknown -t ec2-user@bastion ssh -A $noknown -t -D 9932 ec2-user@target

「権限拒否」のため失敗します。

私は簡単な最初のステップを試しました。

ssh -t -v -A first ssh -A -t -v $noknown ec2-user@bastion

そして、ログは、エージェントの追加キーが「bastion」に提供されていないことを示しています。 ssh -L は始点に表示します。

編集する

ここでの問題のいくつかは、私が最初のホップターゲットとして使用しようとしていた私のオフィスのホストの1つに関連するいくつかの未知の問題であることがわかりました。別のものに変更すると、全体的にクールなシェルを得ることができます。入手できないのがソックスエージェントです。

この質問に対するコメントは、マルチホップソックスエージェントが実際に概念的に難しいことを示唆しているので、これはこの質問の実際の問題です。

編集2

このページマルチホップソックスに関するものだと主張していますが、ポート番号のスペルが間違っているようです。

答え1

まあ、私は答えを見つけました:

ssh -t -v -A -D9932 -L9933:localhost:9933 -L9934:localhost:9934 FIRST-HOST ssh -D9933 -L9934:localhost:9934 -A -t -v  ec2-user@SECOND-HOST ssh -D9934 -A -t -v ec2-user@THIRD-HOST

9934 をソックスプロキシポートとして使用します。

必要に応じて明確に.ssh/configマッピングできます。私の質問の2番目のリンクのクレジットです。

答え2

マルチホッププロキシを使用する代わりに、中間ホストをSSHリレーとして使用して要塞にアクセスします。ここでSOCKSプロキシを設定できます。

ワーカーホストへのアクセスの設定

まず、アクセス設定host-at-work:

Host host-at-work
User myself

要塞へのアクセスの設定

次に、要塞へのアクセスを設定します。 SSHリレーを使用してhost-at-work要塞に接続します。

Host bastion
User myself
ProxyCommand ssh host-at-work -W bastion:22

これで、以下を使用して要塞に接続できます。

ssh bastion

SOCKSプロキシ設定

これで要塞に接続できるので、SOCKSプロキシを設定できます。

ssh bastion -D 9932 -N

SSHの最後のホストに接続したいですか?

その後、SSHに要塞をリレーとして使用するように依頼したいと思います。

Host thing-to-observe
User myself
ProxyCommand ssh bastion -W thing-to-observe:22

これにより、次のことができます。

ssh thing-to-observe

関連情報