GNU/Linux >> Linux の 問題 >  >> Linux

あるマシンから別のマシンにポートを転送する方法は?

はい、これは GatewayPorts と呼ばれます SSHで。 ssh_config(5) からの抜粋 :

GatewayPorts
        Specifies whether remote hosts are allowed to connect to local
        forwarded ports.  By default, ssh(1) binds local port forwardings
        to the loopback address.  This prevents other remote hosts from
        connecting to forwarded ports.  GatewayPorts can be used to spec‐
        ify that ssh should bind local port forwardings to the wildcard
        address, thus allowing remote hosts to connect to forwarded
        ports.  The argument must be “yes” or “no”.  The default is “no”.

localhost を使用できます M の代わりに SSH 接続しているのと同じマシンに転送しているため、転送で -- 私があなたの質問を正しく理解していれば。

したがって、コマンドは次のようになります:

ssh -L 2222:localhost:8888 -N -o GatewayPorts=yes hostname-of-M

netstat -nltp では次のようになります :

tcp        0      0    0.0.0.0:2222   0.0.0.0:*  LISTEN  5113/ssh

ポート 2222 TCP でこのマシンにアクセスする人は、マシン M で見られるように、実際には localhost:8888 と通信します。これは、M のポート 8888 への単純な転送と同じではないことに注意してください。


別の方法があります。 iptables で S:2222 から W:8888 へのポート転送を設定できます。単一コマンド:

iptables -t nat -A PREROUTING -p tcp --dport 2222 \
         -j DNAT --to-destination 1.2.3.4:8888

ここで、1.2.3.4 は M の IP アドレスです。 NAT (Network Address Translation) と呼ばれます。


その他の代替:netcat (繁体字) または socat

サーバー上 (S):

socat tcp-listen:2222,reuseaddr,fork tcp:M:8888

または

nc -l -p 2222 -c 'nc M 8888'

詳細は次を参照してください:あるローカル ポートから別のローカル ポートへのトンネルを作成する簡単な方法


Linux
  1. Linux / Unixで複数のファイルの名前をある拡張子から別の拡張子に変更する方法は?

  2. あるファイルから別のファイルの単語を見つける方法は?

  3. ある Git リポジトリから別のリポジトリにコミットをコピーする方法は?

  1. Linuxでパーミッションをあるファイルから別のファイルにコピーまたは複製する方法

  2. マウントなしで、あるワークステーションから別のワークステーションへのシンボリック リンク

  3. 同じネットワーク内のある IP から別の IP へのポート転送を行うにはどうすればよいですか?

  1. すべてのファイル(非表示を含む)をあるディレクトリから別のディレクトリに移動するにはどうすればよいですか?

  2. あるマシンから別のマシンに設定をコピーする方法は?

  3. CentOS / RHEL :ボリューム グループをあるシステムから別のシステムに移動する方法