web-dev-qa-db-ja.com

ジャンプサーバーを介したリモートポート転送

Sshを使用したリモートポートフォワーディングの次のユースケースがあります。ローカルネットワークにライセンスサーバー(L)があります。ターゲットサーバー(T)からライセンスを取得できるようにしたい。 Tには、ジャンプボックス(J)を介してのみアクセスできます。ライセンスが機能するためには、Tにアクセスできる2つの特定のポートが必要です。ここで開発しない理由から、Tからローカルに転送したくありません。したがって、要約すると、リモート転送ポート、たとえば次のように1025としましょう。

L-> J-> T

現在の解決策

今のところ、次のように2つのリモートポート転送を行っています(接尾辞「_IP」は関連するIPアドレスを指します)

  • Lから:ssh -fNT -R 1025:127.0.0.1:1025 user @ J_IP
  • Jから:ssh -fNT -R 1025:127.0.0.1:1025 user @ T_IP

そして、すべてが正常に機能します。

求められた解決策

使いやすさとセキュリティ上の理由から、転送は1つのトンネルまたは少なくとも1つのコマンドで実行する必要があります。理想的には、転送されたポートはJから利用できないようにする必要があります。sshのドキュメントとブログを読んだ後、Lから次のコマンドを思いつきました。

ssh -fNT -R T_IP:1025:127.0.0.1:1025 user@J_IP

動作しません。 Jのsshdログは、認証が成功したことを示しています。まず第一に、それは理論的に正しいですか? Tを追加で構成する必要がありますか?

NB:私は通常、自分のマシンでローカルポート転送を使用してTに直接sshするために同様のことを行っていますが、かなり似ていると思いました。

ssh -fNT -L [127.0.0.1:]2222:T_IP:22 user@J_IP
ssh -p 2222 user@localhost

関連する構成の詳細:Jの/ etc/ssh/sshd_configには次のオプションがあります。

AllowTcpForwarding yes
GatewayPorts yes

実行されたテスト:私はLinuxの専門家ではないので、考えられるすべての原因を取得することはできません。働くために。これらは、それが試されたシナリオです:

  • GatewayPortsはいTで
  • 関係するすべてのマシンでファイアウォールが無効になっている

Versions:関連するすべてのマシンはcentos/RHEL7.5を使用しています。 openssh7.4が使用されています。 ssh -Vの結果:

OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

提案

  1. Sshをもっとエキゾチックに使用する必要がありますか?つまり、ProxyCommandまたはRemoteCommandを使用する必要がありますか?
  2. OSまたはssh自体のいずれかの構成ポイントがありませんか?

PS:Stackでの最初の質問です。おそらく、重要な情報を忘れています。コメントでできるだけ反応的になるように努めます。

1
jmon12

私はついに別のSlackExchangeコミュニティで私の問題の解決策を見つけました。 この投稿 を参照してください。

これは、-Jオプションを使用することで構成されます(これはProxyCommandまたはProxyJumpオプションのショートカットですが、openssh> = 7.3で使用できます)。私のユースケースに適用すると、Lサーバーから次のようになります。

ssh -fNT -R 1025:127.0.0.1:1025 -J user@J_IP user@T_IP
1
jmon12