タイガーラック クリエイティブブログ
2026
February
19

SSHトンネルで安全に管理画面へアクセスする

先日、あるWebアプリをVPS上で動かすことになりました。
今回はDockerを使って運用する構成です。

この構成では、外部公開用のポートとは別に
管理画面用のポートも用意されています。

管理画面は社内の人間しか利用しないため、
セキュリティ面を考えて、インターネット上には公開しない方針にしました。

SSHトンネルを使ってアクセスします。

SSHトンネルとは

ChatGPTに聞いてみると

SSH接続を使って「暗号化された専用の通路」を作る仕組み

とのことです。

SSHでVPSにログインできる人だけが、その通路を使ってアクセスできるようになります。

経緯

最初はいつも通り、管理画面にはBasic認証をかければいいか、といった気持ちでした。

普段はApacheを入口にして、外からのアクセスをいったんApacheが受け取り、
そこからアプリ本体へ転送する構成だからです。

このやり方だと、Apache側で
– Basic認証
– IP制限
などの制限をかけやすく、管理画面を守りやすいです。

しかしApacheを経由させる構成にすると、その先の管理画面のログインが正常に動作せず、
エラーになってしまいました。

調べてみると、管理画面はログイン時に「どのURLからアクセスしてきたか」などをチェックしているようで、Apacheを挟むことでその情報が変わってしまい、弾かれてしまうようでした。

そのため、管理画面はインターネットに公開せず、SSHトンネルを使って必要な人だけがアクセスする構成に切り替えました。

SSHトンネルでのアクセス方法

ここでは、管理画面が 3333 番ポートで動いている想定です。

1. Dockerのポート公開を調整する

まず、docker-compose.yml の ports を以下のようにします。

ports:
      - "127.0.0.1:3333:3333"
      - "0.0.0.0:5580:5580"

この設定のポイントは

• 管理画面(3333)は VPS の localhost からしかアクセスできない
• 外部公開用(5580)はインターネットに公開する

つまり、管理画面のポートは外部から直接アクセスできない状態になります。

2. SSHトンネルを張る

ローカルPCから以下を実行します。

ssh -N -L 3333:127.0.0.1:3333 user@your-vps-ip

このコマンドは、

• 自分のPCの localhost:3333
• VPSの 127.0.0.1:3333

をトンネルでつなぐ、という意味です。

3. ブラウザでアクセスする

トンネルを張った状態で、ブラウザで以下にアクセスします。

https://127.0.0.1:3333

これで、管理画面が表示されます。
※管理画面側がTLSで動いているため、ローカルアクセスも https になります。

4. SSHトンネルを閉じる

管理画面での作業が終わったら、SSHトンネルを張っているターミナルで
Ctrl + C
を押して終了します。

(補足)バックグラウンドで起動した場合
もし -f オプションを付けてバックグラウンドで起動している場合は、Ctrl + C では止められません。
その場合は、SSHプロセスを終了してトンネルを閉じます。

pkill -f "ssh -N -L 3333"

この方法のメリット

SSHトンネルにすると、管理画面が外部に公開されないため

• ポートスキャンされても管理画面が見えない
• 攻撃対象になりにくい
• Basic認証やIP制限を無理に頑張らなくていい

というメリットがあります。

まとめ

結果的にBasic認証よりセキュアになったので、この方法を採用してよかったです。

このカテゴリの最新記事

関連記事

SHOP LIST

タイガーラック株式会社

〒577-0056
大阪府東大阪市長堂1-3-14 TOKUYASU Bld.