SSH ローカルポート転送

Linux

sshはセキュアなターミナルとして使われる事が多いのですが、少し変わった機能としてポート転送機能があります。

セキュアなターミナルというのはセキュアな通信経路を確保した上でリモート側のシェルを起動して、シェルの入出力を転送することと考えると、ポート転送はセキュアな通信経路を確保しますがシェルを起動せずポートの入出力を他の通信に転送することと考えられます。まぁ、超ざっくりですが。

ポート転送にはローカルとリモートの2種類がありますが、今回はローカルのポート転送を考えます。

構成

簡単な構成を考えてみます。

Ssh pfl 01kousei

3台のPC(purple、green、cyan)があり、greenではSSHサーバが動作していて、cyanではWebサーバが動作しています。3台のPCはネットワークに繋がっていますが、purpleとgreenの間はインターネットなどのセキュアでないネットワーク、greenとcyanの間はLANのようなセキュリティを気にしなくても良いネットワークとします。

cyanで動作しているWebサーバにpurpleからアクセスしたいのですが、セキュリティの都合でcyanはインターネットからのアクセスが制限されています。一方、greenはインターネットからのアクセスが可能です。

Ssh pfl 02network

そこで、purpleから一旦greenにSSH接続してから、さらにcyanのWebへ接続する方法を取る事とします。

SSHローカルポート転送

purpleからsshでgreenに接続するときにローカルポート転送するコマンドです。

purple # ssh -f -N -L 12345:192.168.103.5:80 192.168.102.4

-Lオプションはローカルポート転送をしてします。この例では自ホストであるpurpleの12345ポートを192.168.103.5:80へ転送することを示しています。

-Nオプションは接続先のシェルを起動しない事を示します。

-fオプションはこのsshコマンドをバックグラウンドで動作させる事を指定します。

コマンドを実行したときのネットワークの状態は次のようになっています。

purple # ss -4atn
State          Recv-Q      Send-Q           Local Address:Port              Peer Address:Port
LISTEN         0           128                  127.0.0.1:12345                  0.0.0.0:*
ESTAB          0           0                192.168.102.3:48854            192.168.102.4:22

ポート51240からgreen(192.168.102.4)にセッションが張られています。また、ポート12345がLISTEN状態になっています。

一方、greenのネットワークの状態です。

green # ss -4tan
State       Recv-Q       Send-Q             Local Address:Port              Peer Address:Port
ESTAB       0            0                  192.168.102.4:22               192.168.102.3:48854

purpleからのsshセッションがあることがわかります。

Ssh pfl 03ssh

ポート転送

purpleからポート転送設定している自分のポート12345へWebアクセスをしてみます。

purple # curl localhost:12345
<head>
    <title>Cyan</title>
</head>
<body>
    <h1>Cyan</h1>
</body>

無事cyanのWebへアクセスできました。

Ssh pfl 04pf

ローカルポート転送の終了

sshコマンドの-fオプションによってsshはバックグラウンドで動作し続けています。動作を終了させるためにpsコマンドでプロセス番号を求めてkillコマンドで終了させます。

purple # ps -ef | grep ssh
root        2441       1  0 16:04 ?        00:00:00 ssh -f -N -L 12345:192.168.103.5:80 192.168.102.4
purple # kill 2441

コメント

タイトルとURLをコピーしました