Linuxでsshコマンドを使ってポートフォワーディングする方法

Linuxでsshコマンドを使ってポートフォワーディングする方法

フォワーディング (forwarding)とは、簡単に日本語にすると「転送する」ことで、ポートフォワーディングは、マシンの指定したポートに来たパケットを、指定した宛先に転送してあげることです。

ここでは、Linux(CentOS 7)環境で、SSHを利用した代表的なポートフォワーディング設定例を紹介します。

この記事は、以下の環境で実行した結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
CentOS Linux7.4.1708

ローカルポートをリモートへ転送する

Linuxでsshコマンドを使ってポートフォワーディングする方法

上の図のような環境で、PCからWebサーバーにhttp接続したい場合は、中継サーバーを経由してローカルポートを転送するよう設定します。

たとえば、PC上のtcp10080番ポートに送信されたパケットを、中継サーバーを経由しWebサーバーのtcp80番ポートに転送するよう設定することで、PC上でhttp://localhost:10080にアクセスすると、http://192.168.1.201のコンテンツを表示することができます。

PC上で実行するコマンドは次のとおりです。

# ssh 192.168.1.200 -L 10080:192.168.1.201:80 -N

リモートポートをローカルに転送する

Linuxでsshコマンドを使ってポートフォワーディングする方法

上の図のような環境で、中継サーバーがインターネットへ出るためには、PCを経由してリモートポートを転送するよう設定します。

たとえば、中継サーバーのtcp9090番ポートへの接続を、PCを経由してProxyサーバーのtcp8080番ポートへ転送することで、中継サーバーがインターネットへ出ることができるようになります。

PC上で実行するコマンドは次のとおりです。

# ssh 192.168.1.200 -R 9090:192.168.0.101:8080

あとがき

暗号化されていない通信(vnc、http、popなど)と、sshポートフォワーディングを組み合わせることで通信の安全性を高めることがでます。お試しあれ。