SSHポートフォワーディング使ってインターネットからグローバルIPを持たないAzure VMに接続(Tera Term)

Azureなどのパブリッククラウドの仮想マシンには、インターネット経由で仮想マシンに付与したグローバルIPでアクセスする事が出来ます。ただすべての仮想マシンにグローバルIPを付与してアクセスを管理するというのも面倒だったりします。

SSHポートフォワーディングを使うとグローバルIPを持たないAzure上にある仮想マシンにインターネットからアクセスする事が出来ます。

今回はTera Termを利用したポートフォワーディングの設定から実際のアクセスまでを実施してみました。

スポンサーリンク

SSHポートフォワーディング検証用環境構成

SSHポートフォワーディングとは

SSHによって確立した通信経路を利用してクライアントのポートをクライアントが直接アクセスできないターゲットサーバ(グローバルIPを持たない仮想マシン)に転送してくれる仕組みを指します。

このSSHポートフォワーディングを使うとグローバルIPを持つ仮想マシン経由でグローバルIPを持たない仮想マシンへアクセスする事が出来ます。

またSSHポートフォワーディングはSSHの通信を転送するだけではなく、HTTPSやRDPと言ったSSH以外の通信も転送する事が可能です。

今回のSSHポートフォワーディング検証環境

SSHポートフォワーディング検証環境構成は3台の仮想マシンで構成しています。

リモートサーバアクセス経由でターゲットサーバへアクセス(ローカルフォワード)します。SSHとRDPの転送を行います。

3台の仮想マシンのはこのようなOSで構成しています。

仮想マシン名 OS 役割 グローバルIP ローカルIP ユーザー
SSH-PortForward-01 Cent OS 7.9 リモートサーバ 192.168.1.4 sshadmin
test-linux-01 Cent OS 7.9 ターゲットサーバ × 192.168.1.5 sshuser
test-win-01 Windows 2019 ターゲットサーバ × 192.168.1.6 rdpuser

必要なネットワークセキュリティグループ(NSG)許可設定

今回の構成で必要になるネットワークセキュリティグループ(NSG)の通信許可設定です。

ローカルPCからターゲットサーバへのアクセス許可は必要ありません。ターゲットサーバのネットワークセキュリティグループ(NSG)にインターネットからの受信セキュリティ規則(SSHやRDP)を作成必する要はありません。

仮想マシン名 必要なネットワークセキュリティグループ設定 必要な作業
SSH-PortForward-01 ローカルPCから22番ポートの受信許可設定 ローカルPC(インターネット)から22番ポートを受信許可設定を作成
test-linux-01 リモートサーバからの22番ポートでのアクセス許可 デフォルトでは仮想ネットワーク内のアクセス許可がされている為追加設定は必要無し
test-win-01 リモートサーバからの3389番ポートでのアクセス許可 デフォルトでは仮想ネットワーク内のアクセス許可がされている為追加設定は必要無し

Tera Termを使ったSSHポートフォワーディング設定

仮想マシンでのSSHポートフォワーディング許可設定

Cent OS 7.9のAzure VMではデフォルトでSSHポートフォワーディングが許可されている為仮想サーバに対しての設定は必要ありません。

Tera TermのSSH転送機能を使うとSSHポートフォワーディングが出来る

SSHポートフォワーディングはTera TermのSSH転送設定で行います。

Tera TermのSSH転送設定

Tera Termの設定にあるSSH転送を選択します。

SSHポート転送の設定画面が表示されます。

追加を選択します。

test-linux-01への設定を作成します。

設定値を入力します。

  • ローカルポート
    • ローカルPCでアクセスする場合に使うポート番号
    • 今回は10022を指定
  • リモート側ホスト
    • ターゲットになるサーバのローカルIP
    • 今回は192.168.1.5を指定
  • ポート
    • ターゲットにサーバにアクセスに使うポート番号
    • SSHのデフォルト値である22番ポートを指定

test-linux-01への設定を作成します。

設定値を入力します。

  • ローカルポート
    • ローカルPCでアクセスする場合に使うポート番号
    • 今回は13389を指定
  • リモート側ホスト
    • ターゲットになるサーバのローカルIP
    • 今回は192.168.1.6を指定
  • ポート
    • ターゲットにサーバにアクセスに使うポート番号
    • RDPのデフォルト値である3389番ポートを指定

設定が2行出来ている事が分かります。

OKを選択します。

このままだと一旦Tera Termを閉じると設定が消えてしまいます。

設定の保存を選択します。

teraterm.ini(Tera Termの設定ファイル)を保存します。

SSHポートフォワーディング(Tera TermのSSH転送)を使ってリモートサーバのローカルIPへ接続

SSH接続の場合

      • 接続手順(ターゲットサーバへの接続がSSHの場合)
        • ローカルPC-リモートサーバ間のSSH接続を行う
        • ローカルPC-ターゲットサーバ間のSSH接続を行う

※ローカルPC-リモートサーバ間のSSHポートフォワーディングを切断すると、ローカルPC-ターゲットサーバ間の接続も切断されます。

SSHポートフォワーディングを使った接続(SSH)

まず最初にリモートサーバ(SSH-PortForward-01)(グローバルIPを持つVM)へSSH接続します。

この場合は通常のリモートサーバのSSHポートへアクセスします。

ユーザー名とパスワードを入力しログインします。この場合のユーザーは何でも問題ありません。

※鍵認証の場合も同様です。

リモートサーバ(SSH-PortForward-01)にログインしました。

この状態のまま次に進みます。

新しい接続を選択します。

ホストにはlocalhost、TCPポートにはSSH転送設定でローカルポートに指定した10022を入力します。

ターゲットサーバのユーザー名とパスワードを入力します。

※鍵認証の場合も同じくターゲットサーバに指定した鍵ファイルを利用します。

ターゲットサーバへ接続する事が出来ました。

RDP接続の場合

      • 接続手順(ターゲットサーバへの接続がRDPの場合)
        • ローカルPC-リモートサーバ間のSSH接続を行う
        • ローカルPC-ターゲットサーバ間のRDP接続を行う

※ローカルPC-リモートサーバ間のSSHポートフォワーディングを切断すると、ローカルPC-ターゲットサーバ間の接続も切断されます。

SSHポートフォワーディングを使った接続(RDP)

リモートサーバへのSSH接続がされている状態で作業を開始します。

コンピュータ名にはlocalhost:13389を指定します。

この13389はSSH転送で設定したローカルポート番号になります。

※RDP接続時にポート番号を指定する場合は、接続先サーバのIP:(コロン)接続時のポート番号になります。

ターゲットサーバのID、パスワードを入力します。

リモートコンピューターにターゲットサーバのホスト名が入っている事が確認出来ました。

はいを選択し接続します。

ターゲットサーバへ接続する事が出来ました。

このようにグローバルIPを持たない仮想マシンにもローカルPCから接続出来る事が確認出来ました。