一回限り、またはとにかく時々、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に似たシステムの経験はありませんが、同等のものがあると信じています。