SSHのポートフォワード機能は、端末(Windows)から直接目的のサーバ(アプリサーバ)にアクセスできない場合に利用する方法です。
SSHポートフォワードは、図1のように「端末(Windows)」が「踏台サーバ」を経由することで、目的のサーバ(「アプリサーバ」)に接続できます。この仕組みにより、「アプリサーバ」は外部(許可無)から直接アクセスされるリスクを軽減し、かつ許可された外部(許可有)の「端末」だけがアクセス可能となります。
図1(リモートポートフォワード)
この機能は、「踏台サーバ(SSHサーバ)」を経由して、「アプリサーバ」のSSH接続(22/tcp)だけではなく、HTTPS(443/tcp)、RDP(3389/tcp)など様々なアプリ通信が可能となります。
※今回は、「端末(Windows)」が目的のサーバ(「アプリサーバ」)にSSH接続(22/tcp)することに特化して以下3つの実践的な利用方法を解説いたします。
1.端末(Winodws)のエフェメラルポートを利用したローカルポートフォワード
2.踏台サーバのエフェメラルポートを利用したローカルポートフォワード
3.踏台サーバが許可した端末のエフェメラルポートを利用したリモートポートフォワード※このサイトで解説
踏台サーバが許可した端末のエフェメラルポートを利用したリモートポートフォワード
目的
「踏台サーバ」側でSSHポートフォーワードを実行、「踏台サーバ」が「端末(Windows)」へ接続して「アプリサーバ」へSSH接続する場合に利用します。
接続イメージ図
構成概要
- 端末(Windows):ループバックアドレス(localhost)のエフェメラルポートを使って「アプリサーバ」にSSH接続します。
- 踏台サーバ:「端末(Windows)」にSSH接続をします。「端末(Winodws)」を「アプリサーバ」にSSH接続させるサーバです。
- アプリサーバ:SSHサービスが稼働しているサーバです。「端末(Windows)」がSSH接続したい目的のサーバです。
条件
- 「端末(Windows)」にSSHサービスを起動させてSSH接続できる環境を用意する必要があります。
<例>
Windows11の場合
1.「設定」 を開き、「システム」を選択し、「オプション機能」を選択します。
2.「機能の追加」を選択して、「OpenSSHサーバー」を選択して追加をします。
3.「コントロールパネル」を開き「管理ツール」を選択して「サービス」を起動します。
4.「OpenSSH SSH Server」を選択してサービスを起動します。 - 「端末(Windows)」のエフェメラルポート「10022/tcp」を使用します。
- 「踏み台サーバ」から「端末(Windows)」の「22/tcp」ポート(SSH)にアクセスできる必要があります。
SSHポートフォワードのコマンド
※「踏台サーバ」で実行します。
ssh -R localhost:10022:10.10.20.30:22 user@10.10.10.10
ー>実行後、「端末(Windows)」の「10.10.10.10」にSSH接続するログインID(user)とパスワードを入力する。※Windows端末にログインするIDとパスワードになります。
コマンド説明
- -Rはリモートポートフォワードを指定します。-Rオプションを使用することで、「端末(Windows)」の指定したローカルポート(10022/tcp)を、「アプリサーバ」の指定ポート(22/tcp)に接続します。
- localhostは「端末(Windows)」自身を指しローカルループバック(127.0.0.1)のIPアドレスです。ローカルループバックを指定する場合は省略可能です。
- :10022は「端末(Windows)」側でLISTENするポート番号です。
- :10.10.20.30はポートフォワードの宛先である「アプリサーバ」のIPアドレスです。
- :22は「アプリサーバ」でSSHサービスがLISTENしているポートです。このポートに接続するためにフォワーディングされます。
- user@10.10.10.10は「端末(Windows)」に対するログイン情報です。「user」はSSH接続利用時のログインIDです。
「端末(Windows)」が「アプリサーバ」に接続する方法
1.TeraTermを利用した場合
ー>「OK」押下後、「アプリサーバ」にSSH接続するログインIDとパスワードを入力します。
2.Bashエミュレータ(Git Bash)を利用した場合
※「端末(Windows)」にBashエミュレータがインストールされておりSSHコマンドが実行できる場合に利用できます。
ー>user@のuserは「アプリサーバ」のログインIDを入力します。
ー>実行後、「アプリサーバ」にSSH接続するログインID(user)のパスワードを入力します。
各サーバ間の通信状況のまとめ
- 「踏台サーバ」から「端末(Windows)」へはSSH接続が可能です。
- 「端末(Windows)」から「アプリサーバ」へのアプリ通信(SSH、HTTP、RDPなど)はできません。
- 「踏台サーバ」と「アプリサーバ」間では、各種アプリ通信(SSH、HTTPS、RDPなど)が可能です。
上記の条件の下、「端末(Windows)」から「踏台サーバ」を経由することで、「アプリサーバ」への各種アプリ通信(SSH、HTTP、RDPなど)を利用することが可能です。
コメント