SSH接続を確立するときにローカルポートを指定するにはどうすればよいですか?


12

IDCでホストされている2つのサーバーがあります。ポート20/21/22/23/3389 / 33101-33109のみを使用して、2つのサーバー間の接続を確立できます。IDCネットワークデバイスは、送信元ポートまたは宛先ポートが20/21/22/23/80/3389 / 33101-33109リスト/範囲にない他のパケットをブロックします。ただし、SSHのソースポートはランダムです。

コマンドを使用 すると、リモートポートを簡単に指定できます。ssh username@server -p remote_port

sshたとえば、ポート33101を使用してSSH接続を確立できるように、コマンドソースまたはローカルソースポートを指定する他の方法はありますか?

私のネットワークトポロジは次のとおりです。
ネットワークトポロジー

回答:



2

一回限り、またはとにかく時々、ProxyCommandアプローチは非常に便利なアプローチです。

一方、複数の同時接続が必要な場合、または日常の作業でそのコマンドを頻繁に使用する必要がある場合は、代わりにサーバーにネットワークアドレス変換(NAT)ルールを設定することを検討することもできます。

これにはroot、最初に単一のNATルールを適用するために、サーバーでのスーパーユーザー(通常は)アクセスが必要です。「サーバー」が実際にはマシンではなくコンテナー(Dockerコンテナーのような)である場合、スーパーユーザーアクセスがある場合でも、NATルールの適用がまったく許可されない(または効果的でない)場合があることに注意してください。

iptablesスイートを備えた典型的なLinuxシステムと言えば、サンプルケースでサーバー1に適用するNATルールは次のようになります。

iptables -t nat -I POSTROUTING -d <server2-ip-address> -p tcp --dport <server2-port> -j SNAT --to :33101-33109

このコマンドは、その時点で使用可能な33101〜33109の範囲内で選択されたソースポートを使用して発信するために、server2-ip-addressのポートserver2-portに接続するようにLinuxカーネルに指示します。

そのルールが整ったら、いつもの方法でserver2に接続します。

ssh username@server2 -p remote_port

またssh、NATルールで指定された範囲に使用可能なポートがある限り、この同じコマンドを必要なだけ同時に使用することもできます。

ただしnetstat、サーバーで実行される(または同等のコマンド)は、サーバー2に配信される実際のトラフィックが変更されたソースポート番号を保持している場合でも、接続のローカルアドレスを変更されていないランダムに選択されたソースポート番号として報告することに注意してください。

NATルールを取り消すためのコマンドは、の-D代わりのオプションを除いて同じ-Iです。

起動時にNATルールが自動的に適用されるかどうかは、サーバー上にあるLinuxディストリビューションと、ファイアウォールの構成が既にあるかどうかによって異なります。

BSDに似たシステムの経験はありませんが、同等のものがあると信じています。

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