SSHのリバースプロキシソリューションが必要


10

こんにちは、プロジェクト用の企業データセンターにサーバーがある状況です。私はポート22でこのマシンにSSHアクセスできます。このサーバーで実行されている仮想マシンがいくつかあり、他の多くのオペレーティングシステムが動作しているすべての背後にあります。現在、データセンターのファイアウォールの背後にいるため、上司から、インターネット上の多くの人にこれらの仮想マシンに直接アクセスできるようにするために何かできるかどうか尋ねられました。22以外のポートでトラフィックを取得することが許可されていれば、ポート転送を実行できます。しかし、これは許可されていないので、この場合の解決策は何ですか?接続したい人は完全にばかかもしれませんが、自分のマシンでパテを開いただけで幸せになったり、ファイルジラになったりするかもしれません。

私はファイアウォールを手に持っていないか、22以外のポートを開いていません。実際に、それらが開くことを許可しないように要求しても、2回SSHは私のスーパーバイザーが望んでいないものです。


1
別の優れたソリューションとの関連質問:serverfault.com/questions/361794/...
魁夷

SSHリバースプロキシgithub.com/tg123/sshpiper
farmer1992

sshpiperdは素晴らしい働きをします!
キラリーイシュト

回答:


5

コンピューターからデータセンターのサーバーへのsshトンネルを開く必要があります。これに「server1」という名前を付けます。opensshを使用している場合は、単に実行できます

ssh -L0.0.0.0:8080:localhost:8080 you_username@server1

これにより、ポート8080でコンピューターからサーバー、ポート8080への接続が開かれ、その間のファイアウォールがスキップされます。あなたのApacheがポート8080でリッスンしていると仮定します。ポートフォワードフォーマットはIP:ローカルポート:リモートアドレス:リモートポートをリッスンしています。もちろん単一サーバーの場合も使用できます

ssh -L0.0.0.0:8080:remote_server_address:8080 you_username@server1

-Lパラメータのlocalhostはserver1に関連していることに注意してください。つまり、サーバーはlocalhostからの接続を認識していますが、実際にはssh接続を介してコンピューターから接続が行われています。

パラメータも必要です

AllowTcpForwarding yes

サーバーのssh構成(通常は/ etc / ssh / sshd_config)。

この後、他のユーザーはポート8080でコンピューターに接続し、Apacheリバースプロキシ経由で接続を取得できます。一般的なプロキシが必要な場合(Apache構成で特定のアドレスだけでなく、ユーザーがアドレスを選択できるようにするため)、squidをserver1にインストールし、sshトンネルを使用してsquidポートに接続する必要があります。


あなたは私が行うときに言うことを意味しssh -L0.0.0.0:8080:localhost:8080 you_username@server1 (それが起こらないならば、私はすべてのことを行うことができないため)接続がファイアウォールのポート22を通過することになるならば、とSSHトンネルは、ローカルマシンとリモートマシンの間で確立されるだろう指定されたポートでトラフィック全体がファイアウォール(ポート22)で送信されます。
ボンド

あなたはSSHトンネルを実行すると、(ポート8080からポート8080へ)そのトラフィックはファイアウォールではなく、8080のポート22へのトラフィックを見ていたポート22を使用して、内部のssh接続を行く
オッリ

このコマンドssh -L0.0.0.0:8080:remote_server_address:8080 you_username@server1 を実行するとき 、remote_server_addressとして何を入力できるかを知りたいのですが、server1を中間マシンとして使用する内部マシンのIPです。これは正しく理解できましたか?
ボンド

ボンド:はい、そうです。複数の-Lトンネルを指定して(もちろん異なるソースポートを使用)、複数の内部マシンへの接続を開くこともできます。たとえば、「-L0.0.0.0:8080:remote_server1:80 -L0.0.0.0:8081:remote_server2:80 -L0.0.0.0:8082:remote_server2:22」(引用符なし)です。
Olli

この堅固なものを作るには、サーバーをデータセンターの外でリバウンドとして機能させ、トラフィックを許可する必要があります。もちろん、sshトンネルは一時的なソリューションとしては問題ありませんが、本番環境では、実際のリバースプロキシをインストールすることをお勧めしますリバウンドし、ファイアウォール設定を調整して、そのリバウンドからのみ8080接続を許可します。つまり、リバースプロキシをDC内の仮想マシンの1つとして配置する方が賢明です。そのため、このマシンに対してのみSSLで接続を保護する必要があります。
jmary 2018

0

SshMeInのようなものを使用できるかもしれません。これはファイアウォールを介してSSHトンネルを作成するオープンソースのWebシステムであり、ポートを開く必要すらありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.