WindowsからCLIのみのLinuxにSSH接続し、それを踏み台サーバーにしてGUI対応のLinuxでブラウザを起動する方法

想定環境
Windows---Linux①(CentOS7)---Linux②(CentOS7)---外部NW
- 実際に操作できるのはWindowsのみ。
- Linux①およびLinux②は仮想環境(VirturlBox)で構築している。
- Linux①およびLinux②はCentOS7を使用している。
その他のバージョン等使用時はコマンドに注意する。
例:CentOS7のyumコマンド → CentOS8ではdnfコマンド - Linux①はCLIのみ。
- Linux②はGUI表示が可能でブラウザが存在し、外部ネットワークに繋がっている。
各インターフェースに設定されているIPアドレスは次のようなアルファベットと仮定する。
- Windows:A.A.A.A
- Linux①:Windows側 B.B.B.B、Linux②側 C.C.C.C
- Linux②:Linux①側 D.D.D.D、外部NW側 E.E.E.E
C.C.C.CとD.D.D.Dは内部ネットワークとして構成されており、WindowsからLinux②へ直接アクセスすることはできない。
実行したいこと
WindowsからLinux①にTeratermでSSH接続し、Linux①を踏み台サーバーにしてLinux②へアクセス後、Linux②のブラウザを起動し、外部ネットワーク(Yahoo!やGoogleなど)にアクセスする。
問題点
Teratermの画面ではGUI表示ができないため、Linux②まで到達できたとしても、そこでブラウザを起動できない。
前提条件
Linux②にXRDP(リモートデスクトップを行うためのソフトウェア)がインストールされていること。
XRDPがインストールされていない場合は、下記参照。
XRDPをインストールするためのコマンド
# yum install -y epel-release
# yum install -y xrdp tigervnc-server
XRDPの通信を許可するためのコマンド
# firewall-cmd --permanent --zone=public --add-port=3389/tcp
# firewall-cmd –reload
XRDPを起動するためのコマンド
# systemctl start xrdp
# systemctl enable xrdp
手順
1. WindowsからLinux①へTeratermを用いてSSHで接続する。
2. Teratermメニューの「設定」→「SSH転送」を選択する。
3. 「追加」をクリックし、下記設定を入力する。
- ローカルのポート:53389(←well-knownポート以外なら何でもいいが番号は覚えておくこと。手順10で必要。)
- リモート側のホスト:D.D.D.D
- ポート:3389
4. Teratermメニューの「設定」→「設定の保存」を選択する。
5. Linux①のsshd_configファイルでポートフォワーディングの設定状況を確認するため、次のVIコマンドを入力する。
sshd_configファイルを編集可能な状態にする。(編集画面を表示する)
# vi /etc/ssh/sshd_config
●編集画面で「/AllowTcp」と入力し、「AllowTcpForwarding」が「Yes」であることを確認する。
- 「No」になっていた場合は下記の通り、「Yes」に修正する。
AllowTcpForwarding No
「No」の「N」にカーソルをあわせ[x]キーを2回押す。
[a]キーを押す。
[Yes]と入力。
[Esc]キーを押す。
●編集画面を終了する。
- 「No」の場合 → 編集後、上書き保存して終了 → [:]、[w]、[q]、[Enter]の順でキーを押す
- 「Yes」の場合 → 編集していないので、そのまま終了 → [:]、[q]、[Enter]の順でキーを押す
- 編集中に訳が分からなくなり、保存せずに終了したい場合は、[:]、[q]、[!]、[Enter]の順でキーを押して編集画面を強制終了させる。
6. sshdを再起動する。
# systemctl restart sshd
7. Teratermを終了する。
# exit
8. 再度、Teratermを起動し、Linux①にSSH接続する。(手順3を有効にするため)
9. Windowsで[Windows]キー+[R]キーから「mstsc」と入力し、リモートデスクトップを起動する。
10. リモートデスクトップの画面で「127.0.0.1:53389」と入力する。
※53389は手順3で入力した番号と一致させること。
※「127.0.0.1:53389」でうまくいかない場合は「localhost:53389」で試す。
11. Linux②のログイン情報を入力する。
12. Linux②のブラウザを起動し、外部ネットワークにアクセスする。
今回のポイント
TeratermでSSH転送を行い、ポートフォワーディングの設定を確認し、リモートデスクトップで接続する。その際、Teratermの再起動(SSHの再接続)が必要となる。