要塞経由でのみアクセス可能なファイアーウォールサーバー上の外部APIにアクセスするための逆トンネル


1

タイトルが紛らわしいと思うならそれはそうです、そして私は非常に混乱しています。これが状況です:

  1. prodサーバーを持っています prod1 それはすべての外部インターネットからの/への出入りトラフィックを妨げて
  2. さらに、このサーバーにSSH接続できる唯一の方法は、最初に内部要塞にSSH接続することです。 bastion.foo.comそれからsshconfigでsshを実行してください。 ProxyCommand ssh -W %h:%p bastion.foo.com

prod1 私はAPIのエンドポイントにヒットできるようにしたい。 curl -I https://api.com (それはhttpsであるのでポート443を使用します)どういうわけかそのサーバへの私のSSH接続を通してトンネリング(私がもちろん接続しているときだけ)いくつかのブログ記事を読んだ後、私はRemoteForwardが答えだと思った:

Host prod1
HostName ...
User ...
IdentityFile ...
RemoteForward 443 api.com:443
ProxyCommand ssh -W %h:%p bastion.foo.com

しかし私が ssh prod1 サーバーが最初に言うことは、

警告:待機ポート443のリモートポート転送が失敗しました

自分がやろうとしていることをどのようにしたらいいですか?私は正しい道を進んでいますか?

回答:


1

本当にあります かわいい絵 説明する RemoteForward opensshで。しかし、リモート転送はあなたが説明するよりもあなたのユースケースではおそらくもっと複雑です。

少なくとも変更する必要があるでしょう /etc/hosts あなたのアプリケーションに対して少なくとも少し透明にするために:

127.0.0.1 api.com

または、api.comではなくlocalhostに直接接続するようにアプリケーションを変更してください。

そして、ご注意ください

特権ポートは、リモートマシンにrootとしてログインした場合にのみ転送できます。

から man ssh_config(5)。これはつまり、root権限なしでポート443をバインドすることはできないということです(あるいはSELinuxのような他のメカニズムでもそうすることを妨げることができます)。あなたはこれらの特権を必要とするか、あるいはあなたは異なったローカルポートを選ぶべきです、そしてそれはあなたのアプリケーションにとってそれをさらに透明にしません。


素晴らしい図ドキュメントやブログ投稿よりもずっと便利です。あなたの /etc/hosts 提案とポート4433への切り替えはこの仕事をしました!ありがとう。要塞/代理人が妨害すると私は思ったが、どうやらそれは影響を及ぼさなかった。
Trevor Hartman
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.