SSHポートフォワーディング(ローカル/リモート)
ローカルおよびリモートのポートフォワーディングを習得し、内部サービスへ安全にアクセスしたり、ローカルサービスをリモートネットワークに公開したりします。
「SSHポートフォワーディング(ローカル/リモート)」はCoddyKit上の無料Linux Server Deployment & SSH Masteryレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLinux Server Deployment & SSH Mastery学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。
SSHで安全なトンネルを構築する
SSHはログイン専用ではありません。ネットワークトラフィックを転送する安全な「トンネル」を作成できます。
この技術はポートフォワーディングと呼ばれ、通常は到達できないサービスや安全でないサービスにアクセスできるようにします。
異なるネットワークポート間に、プライベートで暗号化された橋を架けるようなものだと考えてください。
ポートフォワーディングを使う理由
ポートフォワーディングは、開発者やシステム管理者にとても役立ちます。
- 内部サービスにアクセスする:ローカルマシンから、プライベートネットワーク上のデータベースやWeb UIにアクセスできます。
- ローカルサービスを公開する:リモートネットワーク上の他のユーザーと、ローカルの開発サーバーを共有できます。
- ファイアウォールを迂回する:厳格なファイアウォールの背後にあるサービスへ安全に接続できます。
ローカルポートフォワーディング(L)
ローカルポートフォワーディングは、ローカルマシンからリモートサーバーへ、さらに別の宛先へとつながるトンネルを作成します。
次のように指示するイメージです。「コンピューターのlocalhost:8000に送ったトラフィックを、SSH経由でremote-serverに送り、そこからinternal-db:5432へ転送してください。」
ローカルフォワーディングの構文
ローカルポートフォワーディングのコマンドでは、-Lフラグを使用します。
ssh -L [LOCAL_PORT]:[REMOTE_HOST]:[REMOTE_PORT] [SSH_USER]@[SSH_SERVER]
- LOCAL_PORT:ローカルマシン上のポートです。
- REMOTE_HOST:SSHサーバーが接続するホストです。
- REMOTE_PORT:
REMOTE_HOST上のポートです。 - SSH_SERVER:SSHで接続するサーバーです。
ローカルフォワーディングのシナリオ
db.internal.network:5432でデータベースが稼働しているとします。SSHサーバー(my-server.com)からはそのデータベースに接続できますが、ノートパソコンからは接続できません。
DBeaverやpsqlなどのローカルツールを使って、このデータベースに接続したいとします。
ローカルフォワーディングを使えば、それが可能です。
ローカルフォワーディングの実践
ローカルポート5432から、my-server.comを経由してリモートデータベースdb.internal.network:5432へトンネルを開いてみましょう。
ssh -L 5432:db.internal.network:5432 user@my-server.com
これで、マシン上のlocalhost:5432への接続はすべて、安全にdb.internal.network:5432へ到達します。
リモートポートフォワーディング(R)
リモートポートフォワーディングはその逆で、リモートサーバーからローカルマシンへ、さらに宛先へとつながるトンネルを作成します。
次のように指示するイメージです。「my-server.com:8080に送られたトラフィックをSSH経由でノートパソコンに送り、そこからlocalhost:3000へ転送してください。」
リモートフォワーディングの構文
リモートポートフォワーディングのコマンドでは、-Rフラグを使用します。
ssh -R [REMOTE_PORT]:[LOCAL_HOST]:[LOCAL_PORT] [SSH_USER]@[SSH_SERVER]
- REMOTE_PORT:SSHサーバー上のポートです。
- LOCAL_HOST:SSHサーバーが接続するホストです(通常は
localhost)。 - LOCAL_PORT:
LOCAL_HOST上のポートです。 - SSH_SERVER:SSHで接続するサーバーです。
リモートフォワーディングのシナリオ
ノートパソコンのlocalhost:3000でWebアプリを開発しているとします。別のネットワークにいる同僚に、そのアプリを見せたいとします。
リモートフォワーディングを使うと、パブリックなSSHサーバーのポート(例:my-server.com:8080)経由でローカルアプリにアクセスできるようにできます。
リモートフォワーディングの実践
localhost:3000で稼働しているローカルWebアプリを、my-server.comのポート8080経由で公開してみましょう。
ssh -R 8080:localhost:3000 user@my-server.com
これで、同僚はブラウザーでhttp://my-server.com:8080にアクセスして、アプリを閲覧できます。
ポートフォワーディングクイズ
SSHのポートフォワーディングは強力なツールです。次のうち、その用途を正しく説明しているものはどれでしょうか。
トンネルの構築完了
SSHポートフォワーディングを習得しました。
- ローカルフォワーディング(
-L)は、ローカルポートをリモートサービスに接続します。 - リモートフォワーディング(
-R)は、リモートサーバーのポートをローカルサービスに接続します。
これらの技術で安全な暗号化トンネルを作成し、ネットワークアクセスを効果的に管理できます。練習を続けて、日々の作業に取り入れていきましょう。
よくある質問
「SSHポートフォワーディング(ローカル/リモート)」レッスンは無料ですか?
はい。「SSHポートフォワーディング(ローカル/リモート)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Linux Server Deployment & SSH Masteryコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。
「SSHポートフォワーディング(ローカル/リモート)」で何を学びますか?
ローカルおよびリモートのポートフォワーディングを習得し、内部サービスへ安全にアクセスしたり、ローカルサービスをリモートネットワークに公開したりします。 ブラウザで直接実行するハンズオンコードでLinux Server Deployment & SSH Masteryを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Linux Server Deployment & SSH Masteryを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLinux Server Deployment & SSH Masteryは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「SSHポートフォワーディング(ローカル/リモート)」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLinux Server Deployment & SSH Masteryレッスンでコードを書いて実行できますか?
はい。すべてのLinux Server Deployment & SSH Masteryレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- SSHポートフォワーディング(ローカル/リモート)
- SSHトンネルとSOCKSプロキシ
- SSHエージェントとマルチホップ
- SCP、SFTP、rsyncによる安全なファイル転送