SSH ポートフォワーディング
2026-04-24
SSH ポートフォワーディング(SSH トンネル)という技術を知りました。
これは面白い。
こんなことがしたかった
VPS を監視しています。
状態は Web で見たいのですが公開はしたくありません。
いい方法は無いのか?
公開した上で IP を制限していました。
それでもいいのですが、そもそも公開しない方法があります。
SSH ポートフォワーディングを利用すればできます。
VPS 上では localhost:8090 というように配信します。
外部には公開しません。
ここで、ローカル PC 上で、
ssh -L 8091:localhost:8090 vps_ip
というような ssh のコマンドを実行しておきます。
ローカル PC のブラウザで localhost:8091にアクセスすると VPS 上の配信内容が表示されます。
It’s like magic!
VPS では外部には公開していないのにローカル PC から見れてしまうんです。
しかも localhost にアクセスして。
SSH ポートフォワーディング
SSH ポートフォワーディングは Gemini との会話の中で知ったのですが、本か何かでもう少しちゃんと知りたい。
Software Design の 2012 年 10 月号に記事がありました。
「SSH力をつけよう!」読み応えありました。
(古くて誰も参照できないですね・・・。)
ネット上に記事があればと思ったのですが、見当たらなかったです。
筆者の方が作成したスライドがありましたので、リンクしておきます。
SSH力をつけよう | PDF
少しだけかいつまんで勉強した内容を残しておきます。
まずは基本
ssh リモートホスト # カレントユーザーがログインユーザーとして使用される
ssh -l username リモートホスト # オプションでログインユーザーを指定
ssh リモートホスト ls # ログインしてコマンド(ls)を実行
ポートフォワーディングの種類
- ローカルポートフォワーディング (今回はこれに着目)
- リモートポートフォワーディング
- ダイナミックポートフォワーディング
ローカルポートフォワーディング
- コマンド
ssh -L [bind_address:]port:host_address:host_port リモートホスト
- ローカルポートフォワーディングは
-Lオプションで指定。 bind_addressはローカル側で複数インターフェースがある場合は指定する。省略した場合は localhost になる。host_addressとhost_portはログイン先の sshd から見た転送先。host_addressはリモートホストから接続可能なアドレス。(←思っていたよりずっと柔軟でした。接続したリモートホストだけに留まらない。)
記事ではポートフォワーディング以外にも ssh についていろいろと説明されています。
コンフィグファイル、多段 ssh、エージェント転送などなど。
ssh は中途半端な知識ではかえって危険なので、これからも注意して勉強していきたい。