踏み台サーバー経由でもFTPソフトが使いたい!SSHポートフォワーディング接続ガイド

Webサイトを運営していると、セキュリティ強化のため、本番サーバーに直接SFTP接続できず、「踏み台サーバー(Bastion Server)」を経由しなければならない環境が増えています。

「ターミナルで踏み台サーバーにsshして、そこから更に目的のサーバーにsftpするのは面倒…」「TransmitやCyberduck、WinSCPなど、使い慣れたFTPクライアントソフトで直接ファイル操作したい!」

この記事では、そんなWeb制作者やサイト運営者のあなたのために、「SSHポートフォワーディング(SSHトンネリング)」という技術を使い、踏み台サーバー経由でもFTPクライアントソフトで簡単にファイル転送する手順を分かりやすく解説します。

SSHポートフォワーディングとは?

SSHポートフォワーディングは、SSH接続を利用して、特定の通信を安全な「トンネル」を通して転送する技術です。

少し難しく聞こえるかもしれませんが、やっていることは非常にシンプルです。あなたのPC(ローカル)から踏み台サーバーへSSHの安全なトンネルを掘り、そのトンネルの出口を、目的のサーバー(踏み台の先のサーバー)に繋げるとイメージしてください。

このトンネルさえ作ってしまえば、あなたのFTPクライアントソフトは「自分のPC(localhost)」に接続しに行くだけで、SSHトンネルが自動的に目的のサーバーまで通信を届けてくれる、という仕組みです。

踏み台サーバー経由でFTPクライアントソフトを使う手順

手順は大きく分けて2ステップです。ターミナルで「トンネル」を開き、FTPクライアントソフトで「トンネルの入口」に接続します。

ステップ1: ターミナルでSSHトンネルを確立する

まず、ターミナル(Windowsの場合はPowerShellやコマンドプロンプトなど)を起動し、以下のssh -Lコマンドを実行します。これが「トンネル」を開くための呪文です。

ssh -L [ローカルポート]:[目的サーバーIP]:[目的サーバーSSHポート] [踏み台サーバーUSER]@[踏み台サーバーHOST] -p [踏み台サーバーSSHポート]

各項目の意味は以下の通りです。

  • [ローカルポート]
    あなたのPC(ローカル)で開く「トンネルの入口」となるポート番号です。他のサービスと重複しない任意の番号を指定します。(例: 10220
  • [目的サーバーIP]
    最終的に接続したいサーバー(踏み台の先)のIPアドレスやホスト名です。(例: 192.168.1.100
  • [目的サーバーSSHポート]
    目的サーバーのSSH(SFTP)ポート番号です。(通常は 22
  • [踏み台サーバーUSER]@[踏み台サーバーHOST]
    踏み台サーバーにSSH接続するためのユーザー名とホスト名(またはIPアドレス)です。(例: bastion_user@bastion.example.com
  • -p [踏み台サーバーSSHポート]
    踏み台サーバーのSSHポートが22番以外の場合に指定します。(例: -p 1234) 22番の場合は省略可能です。

▼実行例

ssh -L 10220:192.168.1.100:22 bastion_user@111.11.111.11 -p 1234

コマンドを実行すると、踏み台サーバーのパスワード(または秘密鍵のパスフレーズ)を求められるので入力します。認証が成功すると、ターミナルは待機状態になります。

重要:このターミナルは、FTPクライアントソフトでの作業が終わるまで閉じないでください。(閉じるとトンネルが切断されてしまいます)

ステップ2: FTPクライアントソフトで接続する

ステップ1のターミナルを開いたまま、お使いのFTPクライアントソフト(Transmit, Cyberduck, WinSCPなど)を起動し、新規接続設定を以下のように構成します。

  • プロトコル: SFTP (SSH File Transfer Protocol) を選択します。
  • サーバー (ホスト): localhost または 127.0.0.1 と入力します。
    (※踏み台サーバーや目的サーバーのアドレスではありません
  • ポート: ステップ1で指定した [ローカルポート] を入力します。(例: 10220
  • ユーザー名: 目的サーバー(踏み台の先)のユーザー名を入力します。
  • パスワード: 目的サーバー(踏み台の先)のパスワードを入力します。
FTPクライアントソフト(Transmit)でのSSHポートフォワーディング設定例
FTPクライアントソフト(Transmit)の設定例。サーバーに「localhost」、ポートにローカルポートを指定するのがポイントです。

この設定で接続を実行すると、FTPクライアントソフトはあなたのPCの「10220」ポート(トンネルの入口)に接続しに行きます。すると、SSHトンネルがその通信を自動的に踏み台サーバー経由で目的のサーバー(192.168.1.10022番ポート)へ転送してくれるのです。

まとめ

SSHポートフォワーディングを利用することで、踏み台サーバーがある複雑な環境でも、使い慣れたGUIのFTPクライアントソフトで安全かつ効率的にファイル操作が可能になります。

最初はターミナルのコマンドが少し難しく感じるかもしれませんが、一度設定をお気に入り(ブックマーク)に保存してしまえば、次からはワンクリックで接続できます。Webサイト運営の効率アップに、ぜひ役立ててください。


よくある質問(FAQ)

Q1. なぜFTPクライアントソフトの接続先が「localhost」なのですか?

A1. ssh -Lコマンドで、あなたのPC(localhost)に「トンネルの入口」を作成したからです。FTPクライアントソフトは、その「入口」に接続しに行きます。すると、SSHトンネルが自動的に通信を踏み台サーバー経由で「出口」である目的のサーバーへ転送してくれます。

Q2. うまく接続できません。何を確認すればよいですか?

A2. 以下の点を確認してみてください。
1. ステップ1のターミナルを閉じずに起動させたままにしていますか?
2. 踏み台サーバーや目的サーバーのIP、ポート番号、ユーザー情報に間違いはありませんか?
3. FTPクライアントソフトで指定したローカルポート番号(例: 10220)は、ターミナルのコマンドで指定したものと一致していますか?
4. 目的サーバーは「SFTP」接続(SSH)を許可していますか?(古いサーバーではFTPのみの場合もあります)

Q3. この方法は安全ですか?

A3. はい、安全です。この方法の核となる「SSH」は、通信をすべて暗号化するプロトコルです。あなたのPCから踏み台サーバーまでの通信はSSHによって暗号化されます。また、FTPクライアントソフトで「SFTP」を選択することで、SSHトンネルの中を流れる通信自体も保護されます。

参考資料

CONTACT

webサイト制作、デザインに関するご相談、御見積のご依頼など、弊社へのお問い合わせはこちら