【2026年最新版】ポートフォーワーディングによるSSH接続の方法

📖 この記事は約 8 分で読めます。
Port SSH
概要

ルーターのポートフォワーディングとSSHポートフォワーディングの違いと設定方法を、OpenSSHの公式マニュアルに沿って整理し、社内から自宅のWindowsパソコンへ接続する例を紹介します。

管理人

本記事の読者層は以下の方を想定しています。

本記事の読者層
  • ポートフォワーディングについて知りたい方
  • ルーターのポートフォワーディングとSSHポートフォワーディングの違いを知りたい方
  • SSHポートフォワーディングのコマンド(-L・-R・-D)の使い方を知りたい方
  • 社内から自宅のWindowsパソコンへ、リモートデスクトップで接続したい方
目次

ポートフォワーディングの概要

「ポートフォワーディング」とは、インターネットから特定のポート番号宛てに届いたパケットを、あらかじめ設定しておいたLAN側の機器に転送する機能です。利用にはあらかじめ、ルーター等に設定しておく必要があります。

「ポートフォワーディング ssh」で調べると、ルーターの設定とは別に、SSHポートフォワーディング(SSHトンネルと呼ばれることもあります)が出てきます。こちらは、SSHの安全な通信路を通して、指定したポートの通信を転送する方法です。2つの違いは、次の表のとおりです。

比べる点ルーターのポートフォワーディングSSHポートフォワーディング
設定する場所ルーター等の機器SSHクライアントのコマンド(ssh -L・-R・-D)など
転送のしくみ外部から特定のポート番号宛てに届いた通信を、LAN側の機器へ転送するSSH接続を通して、指定したポートの通信を転送する
本記事で扱う章「(2) 自宅ルーターでポートフォワーディングの設定がされている場合」「セキュアなポートフォワーディング方法」以降

セキュアなポートフォワーディング方法

SSHポートフォワーディングを使ったサーバー間の接続も下記の方法で利用できます。

サーバーを中継して、クライアントのポートをリモートホストのリモートポートに転送します。

ssh -L {ポート番号}:{リモートホスト}:{リモートポート番号} {サーバー}

OpenSSHの公式マニュアルでは、このオプションを-L [bind_address:]port:host:hostportと記載しています。手元(クライアント)のポートに届いた接続を、SSHサーバーの側にあるhostのhostportへ転送する、という意味です。

SSHポートフォワーディングの種類(-L・-R・-D)

SSHポートフォワーディングには、転送の向きによって次の3種類があります。

種類オプション内容
ローカルポートフォワーディング-L手元(クライアント)のポートに届いた接続を、SSHサーバー側の指定した宛先へ転送する
リモートポートフォワーディング-RSSHサーバー側のポートに届いた接続を、手元(クライアント)側の指定した宛先へ転送する
ダイナミックポートフォワーディング-D手元のポートで待ち受け、接続を受けたあとにアプリケーションのプロトコルで転送先を決める

リモートポートフォワーディングのコマンドの形は、ローカルと同じ並びです。ただし、先に書くポートが待ち受ける側は、SSHサーバー側になります。

ssh -R {ポート番号}:{ホスト}:{ホストのポート番号} {サーバー}

サーバー側で待ち受けるポートへ、サーバー以外のホストから接続させたい場合は、sshdのGatewayPortsの設定が関係します(既定値はno)。

転送ポートの待ち受け先と、接続したままにするオプション

手元で待ち受けるポートは、既定ではGatewayPortsの設定に従います。bind_addressにlocalhostを指定すると手元のパソコンだけ、空または*を指定するとすべてのインターフェースから接続できます。ほかのホストから手元の転送ポートへ接続させたい場合は、-gを付けます。

また、転送だけを行い、リモートでコマンドを実行しない場合は、-Nを付けます。

例:手元のブラウザで、SSHサーバー上のWebサーバーを開く

SSHサーバーから見たlocalhostの80番ポート(Webサーバー)を、手元のポート8080へ転送する場合は、次のようにします。

ssh -N -L 8080:localhost:80 {ユーザー名}@{サーバー}

SSHの接続を維持したまま、手元のブラウザでhttp://localhost:8080を開くと、SSHサーバー上の80番ポートに接続されます。

社内から、自宅パソコンへ繋げたい場合

社内のWindowsパソコンから、自宅のWindowsパソコンへ繋げたい場合を考えてみます。

(1) 自宅サーバーに外部からアクセスできるSSHポートが開いている場合

自宅のWindowsパソコンで、リモートデスクトップ(RDP)が有効になっていて、ポート3389で待ち受けているとします。リモートデスクトップの既定のポートは3389ですが、Windowsの既定ではリモートデスクトップは無効です。接続を受ける側になれるのは、Pro・Enterprise・Educationなどのエディションで、Home版は受ける側になれません。

また、自宅のWindowsパソコンのIPアドレスが「192.168.12.100」とします。

社内から、SSHでセキュアなSSHポート25番を使用して自宅サーバー「hogehoge.com」へ接続します。そして、自身のパソコンのWindowsのRDPのポート番号も3389であれば、ポート番号を変更せずそのまま3389ポートとしてIPアドレス「192.168.12.100」のWindowsパソコンにつなげばいいわけです。

この場合のポートフォワーディングは以下のようになります。

ssh -L 3389:192.168.12.100:3389 hogehoge.com

このコマンドを実行すると、手元のパソコンのポート3389に届いた接続が、SSHサーバー「hogehoge.com」を経由して、「192.168.12.100」のポート3389へ転送されます。SSHの接続を維持したまま、リモートデスクトップの接続先をlocalhost:3389にして接続します。手元のパソコンですでにポート3389が使われている場合は、-Lの最初のポート番号を別の番号(例:13389)にして、接続先をその番号に合わせます。

なお、SSHの接続先ポートは、既定では22番です(sshdのPortの既定値)。22番以外のポートで待ち受けているSSHサーバーに接続する場合は、-pでポート番号を指定します。

(2) 自宅ルーターでポートフォワーディングの設定がされている場合

外部からポート番号3389がアクセスされた際、ポート番号3389でIP「192.168.12.100」に転送してある設定の場合は、SSHでなくとも、直接RDP画面上で自宅のIPアドレスを叩けばそのまま繋がります。

まとめ

本記事のまとめ

ルーターのポートフォワーディングは外部からの通信をLAN側の機器へ転送する設定で、SSHポートフォワーディングはSSH接続を通して通信を転送する方法です。

  • ルーターのポートフォワーディングは、外部から特定のポート番号宛てに届いた通信を、LAN側の機器へ転送する
  • SSHポートフォワーディングは、-L(ローカル)・-R(リモート)・-D(ダイナミック)で、SSH接続を通して通信を転送する
  • 社内から自宅のWindowsパソコンへは、ssh -L 3389:192.168.12.100:3389 hogehoge.comで接続し、リモートデスクトップの接続先をlocalhost:3389にする

次回の記事をご期待ください。どうぞよろしくお願いいたします。

関連リンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次