SSHポートフォワーディングは、SSH接続を利用して異なるネットワーク間で通信を安全に転送する方法です。この技術を使用することで、非公開のネットワークリソースへの安全なパスを作成することができます。
SSHポートフォワーディングはローカルフォワーディング、リモートフォワーディング、ダイナミックフォワーディングの3種類があり、目的に応じて使い分けます。ここではローカルフォワーディングについて説明します。
ローカルフォワーディング
一番よく使うパターンかと思います。
例えば、ネットワーク環境の都合で直接アクセスできないサーバ等にSSHでログイン可能な踏み台サーバを経由してアクセスすることができます。
下記は踏み台(SSHサーバ)経由でHTTPサーバにアクセスする例です。
クライアントPCから下記コマンドを実行して踏み台サーバにログインします。
Bash
$ ssh -L 20080:<user1>@172.16.0.1:80 192.168.0.254
下記のようにsshのコンフィグファイルに記載しておくこともできます。
Bash
$ cat ~/.ssh/config
Host fumidai
HostName 192.168.0.254
Port 22
User <user1>
LocalForward 20080 172.16.0.1:80
$
$ ssh fumidai
ログイン後、クライアントPCでブラウザを起動してアドレスバーにhttp://localhost:20080を入力すると踏み台の先にいるHTTPサーバにアクセスできます。
多段フォワーディング
踏み台サーバが2台以上ある場合や、開発用サーバにSSHでログインして任意のポートでテスト用アプリを立ち上げたりしたい時に使えます。
クライアントPCから下記のコマンドを実行するとHTTP&SSHサーバにログインできます。
Bash
$ ssh -o ProxyCommand='ssh -W %h:%p <user1>@192.168.0.254' <user2>@172.16.0.1
下記のようにsshのコンフィグファイルに記載しておくと簡単です。
Bash
$ cat ~/.ssh/config
Host fumidai
HostName 192.168.0.254
Port 22
User <username1>
Host httpserver
HostName 172.16.0.1
Port 22
User <username2>
ProxyCommand ssh -W %h:%p fumidai
LocalForward 20080 localhost:80
$
$ ssh httpserver