web-dev-qa-db-ja.com

内部アプリケーションサーバーにアクセスするためのSSHサーバーでのリモートポート転送

SSHポートフォワーディングを理解しようとしていますが、さまざまな質問やチュートリアルを見て成功していません。私が見たものはすべて私の状況とは少し異なっているようで、それを適用する方法を完全に理解することはできません。私の。

内部ネットワーク(22.22.22.xx)のWindowsマシンからアプリケーション(A)を実行しています。このアプリケーションは、このネットワークでホストされている必要があります。また、(22.22.22.xx)ネットワーク用のネットワークアダプターカードと(11.11.11.xx)ネットワーク用のネットワークアダプターカードを備えたマシンにLinux SSHクライアント/サーバー(S)があります。 SSHクライアントにアクセスできるが(22.22.22.xx)ネットワークにアクセスできないWindowsで実行されているアプリケーションクライアント(C)があるため、Aに直接アクセスできません。設定を以下に示します。

network setup diagram

アプリケーションクライアントがアプリケーションサーバーに到達できるように、SSHサーバーからのポート転送を設定しようとしています。

これまでのところ、アプリケーションクライアントでPuTTYを使用してローカルポートフォワーディングを機能させることができました。私はこのコマンドを使用しました(PuTTYのUIで入力):

ssh -L 8888:22.22.22.5:5555 [email protected]

ここから、「C」でlocalhost:8888に移動し、「S」をトンネリングして、「A」で提供されているページに到達できます。ただし、完璧な世界では、ページにアクセスするたびにクライアントでPuTTYを開いて実行する必要はありません。

そこで、「S」から「A」にポート(たとえば4444)を転送するようにリモートポート転送を設定する方法を見つけようとしています。そのため、「C」から11.11.11.4:4444に移動すると、22.22.22.5:5555にトンネリングされます。

これまで、「S」のコマンドラインでこれを実行してみました。

ssh -R 4444:22.22.22.5:5555 user@localhost -o GatewayPorts=yes

これを実行したとき、マシンに直接SSH接続したように見えました。資格情報を入力し、クライアントから11.11.11.4:4444にアクセスしようとしましたが、サーバーに転送されませんでした。また、「A」でこのコマンドを実行してみました(ただし、PuTTYから)。

ssh -R 4444:localhost:5555 [email protected] -o GatewayPorts=yes

これにより、PuTTYイベントログに「リモートポート転送に失敗しました」というメッセージが表示されました。

私は解決策に非常に近づいていて、コマンドで何かが混乱しているように感じます。または、私は遠く離れていて、何が起こっているのかまったく理解していません。

2
Jtt3mr

ローカルバージョン(最初の例)では、サーバーでの構成が必要な場合を除いて、ほとんど違いはありませんが、リモート/リバース転送は必要ありません。オプション GatewayPorts=yesはsshサーバー用であり、sshクライアント用ではありません。

サーバーSで試してください

ssh -g -L 4444:22.22.22.5:5555 user@localhost
0
RalfFriedl