SSH を使用したジャンプ ボックス経由でローカル リポジトリにアクセスする

SSH を使用したジャンプ ボックス経由でローカル リポジトリにアクセスする

apt-get リポジトリがインストールされたアプライアンスがあります。通常は次のコマンドを使用して、apt-getリモート サーバーからアクセスできるようにします。

ssh user@IPofRemoteServer -R8880:127.0.0.1:8880

ただし、そのためには、ローカル リポジトリ アプライアンスがリモート サーバーに接続されている必要があります。

次のことを行う必要があります:

local repo ---> jumpbox ---> remote server

apt-get updateしたがって、ローカル リポジトリから正常に実行できます。

これを実現するために次のことを試しましたが、成功しませんでした。

ssh -A -t user@jumpbox -R8880:127.0.0.1:80 ssh -A -t user@remoteServer -R8880:127.0.0.1:80

しかし、これは機能せず、調査したところ、ポート 8880 がジャンプボックスの 80 に送られるだけで、実際にはローカル リポジトリに転送するように変換されていないことが原因であると思われます。

さまざまなバリエーションを試しましたが成功しませんでした。リモート サーバーを更新するには、これを実行する必要があります。

答え1

: 十分ではないでしょうか:

ssh -A -t user@jumpbox -R8880:remoteServer:80

リモート サーバーのポートはジャンプ ホストからアクセスできると理解していますか?

編集: さて、リモート ホストに表示して使用したいローカル リポジトリがいくつかあることを理解しました。

まあ、通常は次のように使用します: ~/.ssh/config 内:

Host TargetServer
    Hostname remoteServer
    ProxyJump jumpbox

これで、リモート サーバーに SSH 接続するだけです。

ssh TargetServer -R8880:localhost:80

これでターゲット サーバーにログインできました。Tunel が開いているかどうかを確認できます。

netstat -lapn | grep 8880

もちろん、そこで yum アップデートを行うことができるはずです。

編集2: 設定ファイルなしでコマンドラインで使用したい場合は、-Jスイッチ:

-J [user@] host [:port]
   Connect to the target host by first making a ssh connection to the jump host and then establishing a
   TCP forwarding to the ultimate destination from there.  Multiple jump hops may  be  specified  sepa‐
   rated by comma characters.  This is a shortcut to specify a ProxyJump configuration directive.

答え2

「リモート サーバーから apt-get (...) を実行する」ことと、「ローカル リポジトリから apt-get update (...) を実行する」ことを希望しているとおっしゃっているので、質問を正しく理解できたかどうかわかりません。

ここでは、ローカルがリポジトリをホストしており、リモートがそれに接続したいと想定します。

次のような 2 つのコマンドのいずれか:

local$   ssh -R 54321:localhost:8880 user@jumpbox
jumpbox$ ssh -R 8880:localhost:54321 user@remote
remote$  apt-get ...

どちらか一方:

local$  ssh -tAR 54321:localhost:8880 user@jumpbox ssh -R 8880:localhost:54321 user@remote
remote$ apt-get ...

最後の 1 つでは、ローカルに ssh-agent が必要であるか、ssh -Aエージェントを持つマシンからそれに接続する必要があります。

もちろん、/etc/apt/sources.listリモート上のファイルには localhost:8880 への参照が必要です。

答え3

このコマンドは便利だと思いました:

ssh -L LOCAL_PORT:WEBSERVER:REMOTE_PORT -J jumpuser@JUMPHOST remoteuser@REMOTEHOST

参照:参考:

関連情報