Linux管理・運用の基本
システム管理者のための実践ガイド
システム管理者のための実践ガイド
サーバー管理の現場では、「安全な通信経路」を確保することが重要な課題です。SSHはリモート接続の基本ですが、SSHポートフォワード(SSHトンネリングとも呼ばれます)を理解することで、さらに柔軟でセキュアなネットワークアクセスが可能になります。
この記事では、SSHポートフォワードの中でも特に利用頻度の高い「ローカルポートフォワード」に焦点を当て、その仕組みと具体的な使い方を解説します。
SSHポートフォワード(SSHトンネリング)は、SSH接続の仕組みを使い、外部から直接アクセスできないサーバーやサービスへ「安全な通信経路(トンネル)」を張る技術です。これにより、ファイアウォールによって制限された環境下でも、セキュアに内部サービスを利用できるようになります。
特に、Webサーバーの管理画面やデータベース、バージョン管理システムなど、外部に公開したくないサービスに安全にアクセスしたい場合に非常に役立ちます。
ローカルポートフォワードは、あなたの手元のPC(ローカルホスト)の特定のポートへのアクセスを、SSHサーバー経由でリモートネットワーク内の別のサーバーの特定のポートに転送する機能です。
例えば、社内ネットワークにのみ公開されているWebサーバーの管理画面(ポート8080)に、自宅からSSH経由でアクセスしたい場合を考えます。
この場合、以下のようにローカルポートフォワードを設定します。
ssh -L 8080:internal-webserver.local:8080 user@your-ssh-server.com
コマンドの意味
ssh
: SSHクライアントコマンドです。-L
: ローカルポートフォワードを指定するオプションです。8080
(1つ目): あなたのPC(ローカルホスト)で待ち受けるポート番号。internal-webserver.local
: SSHサーバーからアクセスできる社内Webサーバーのホスト名またはIPアドレス。8080
(2つ目): 社内Webサーバーでサービスが稼働しているポート番号。user@your-ssh-server.com
: SSHサーバーへの接続情報(ユーザー名@ホスト名)です。このコマンドを実行後、SSH接続が確立されたら、あなたのPCのWebブラウザで http://localhost:8080
にアクセスしてください。SSHサーバーを経由して、社内Webサーバーの管理画面が表示されるはずです。
開発環境や検証環境のデータベースに、外部から直接接続できないように設定されていることがあります。この場合もローカルポートフォワードが役立ちます。
ssh -L 3306:db-server.private:3306 user@your-ssh-server.com
コマンドの意味
3306
(1つ目): あなたのPC(ローカルホスト)で待ち受けるポート番号。db-server.private
: SSHサーバーからアクセスできるデータベースサーバーのホスト名またはIPアドレス。3306
(2つ目): データベースサーバーでサービスが稼働しているポート番号(MySQLのデフォルトポート)。この設定により、あなたのPCのデータベースクライアントから localhost:3306
へ接続すると、SSHトンネルを通じてリモートのデータベースにアクセスできます。
SSHポートフォワードには、ローカルポートフォワードの他にも以下の種類があります。
オプション | 種類 | 説明 |
---|---|---|
-L |
ローカルポートフォワード | ローカルPCのポートを、SSHサーバー経由でリモートのサービスに転送 |
-R |
リモートポートフォワード | SSHサーバーのポートを、SSHクライアント経由でローカルのサービスに転送 |
-D |
ダイナミックポートフォワード | SOCKSプロキシとして機能し、動的に複数のポートへの接続を転送(SSH SOCKSプロキシ) |
今回は利用頻度の高いローカルポートフォワードに焦点を当てましたが、他の種類も目的に応じて使いこなせるようになると、より柔軟なネットワーク運用が可能になります。
/etc/ssh/sshd_config
に AllowTcpForwarding yes
が設定されているか確認しましょう。設定変更後は sudo systemctl restart sshd
でSSHサービスを再起動するのを忘れずに。ssh -N -L ...
のように -N
オプションを追加すると、リモートコマンドを実行せずにポートフォワードだけを確立できます。バックグラウンドで実行する場合は -f
オプションも併用します。ssh: connect to host ... Connection refused
と表示される: これはSSHサーバー自体に接続できない場合に表示されるエラーです。SSHサーバーが起動しているか、ファイアウォールでSSHポート(通常22番)がブロックされていないかを確認してください。
SSHポートフォワード、特にローカルポートフォワードは、セキュアかつ柔軟なネットワークアクセスを実現するための強力なツールです。直接アクセスできない内部サービスへの接続や、セキュリティを強化したリモートアクセスなど、様々なシーンでその真価を発揮します。
この記事がSSHポートフォワードについて理解を深める一助となれば幸いです。
Linux管理・運用の基本シリーズは今回で最終回となります。長らくご愛読いただき、誠にありがとうございました。このシリーズを通して、皆様のLinux管理スキルが向上したことを願っております。今後も、より深く、より実践的なLinuxの情報をお届けできるよう努めてまいりますので、引き続きMintJams公式サイトにご期待ください。