SSH を利用して、外部から内部に FTP する方法

Last modified: Wed Jan 26 13:38:35 2011 +0900 (JST)


概要

 龍谷大学ではファイアウォールを構築している関係上、 学外のホストから直接 FTP で学内のホストに接続することはできません。

 この問題を回避するにはいくつかの方法があるのですが、ここでは、 ssh と ftp proxy サーバを組みあわせる方法について解説します。 なお、ここで解説する方法を利用するには、ゲートウェイホスト rins.st.ryukoku.ac.jp のアカウント (利用者登録) が必要になります。

 以下では主に、Windows 用の ssh クライアント PuTTY と、Windows 用の FTP クライアント FFFTP を利用する場合について解説します。 UNIX コマンドラインについては、UNIX コマンドラインの場合 を参照してください。

PuTTY の設定と操作

 PuTTY のインストールや基本的な操作については、secure shell (ssh) についてを参照してください。

  1. 「PuTTY 設定」において、次の設定を行います。

    1. 接続 → SSH → トンネル において、源ポート: 8021、送り先: rins-ext.st.ryukoku.ac.jp:8021 と入力し、[追加(D)] をクリックします。

       

      すると、「フォーワードされたポート」に、次のように表示されます。

       
    2. 接続 → SSH において、優先する SSH プロトコルバージョン: に「2」を選択します。

       
    3. 接続 において、自動ログインのユーザ名: に自分のログイン名 (例では kjm) を入力します。

       
    4. セッション において、ホスト名: rins.st.ryukoku.ac.jp、 ポート:22、プロトコル: SSH と入力します。

      さらに、保存されたセッション に適切な文字列 (例では rins.st (ftp FWD)) を入力し、[保存(V)] をクリックします。

       

      すると、次のように表示されます。

       
  2. 上記の保存されたセッション名をダブルクリックするか、 セッション名をクリックして [読込(L)] をクリックし、さらに [開く(O)] をクリックするかすると、以下のように接続が開始されます。

     

    なお、初回接続時には、仮想端末として使う (PuTTY) にあるように、「ホスト公開鍵」の確認ダイアログが表示されますので注意してください。また、プロトコルバージョン 1 と プロトコルバージョン 2 ではホスト公開鍵が異なりますので注意してください。

    プロトコル
    バージョン 1
    hex 形式
    1024 a4:29:8f:1f:12:40:87:58:af:b3:ce:ee:60:fe:79:a3
    bubblebabble 形式
    1024 xesed-dutur-tuzuk-syzyd-gaget-komoh-tomon-tezug-ninol-vysod-gixox
    プロトコル
    バージョン 2
    RSA 鍵
    (通常はこちら)
    hex 形式
    1024 52:32:d9:b3:5e:06:ab:5a:63:46:d4:3d:19:75:68:5b
    bubblebabble 形式
    1024 xocar-cyzuz-dazof-suvez-bitid-komof-vekym-hepan-syrav-gotep-lyxex
    DSA 鍵 hex 形式
    1024 d8:61:26:07:34:91:01:a1:8c:21:68:7c:36:1d:86:90
    bubblebabble 形式
    1024 xuhod-mumov-sifys-rugip-vazec-zinyt-betys-gegyc-tenat-vamem-buxax
  3. パスワードを入力し [リターン] キーを押すと、次のように接続が完了します。

     
  4. このとき Windows で netstat -na コマンドを実行すると、次のように、 127.0.0.1:8021 が LISTENING になっているのがわかります。

     

FFFTP の設定と操作

 FFFTP のインストールや基本的な操作については、FFFTP ホームページを参照してください。

  1. [オプション(O)] メニューから [環境設定(S)..] を選択します。

     
  2. オプション ウィンドウが表示されます。 [FireWall] タブを選択し、次のように設定します。

    FireWall のタイプ(T) USER ユーザ名@ホスト名
    FireWall ホスト(H) localhost
    ポート(X) 8021
     

    [OK] をクリックして オプション ウィンドウを閉じます。

  3. [接続(F)] メニューから [接続(C)..] を選択します。

     
  4. ホスト一覧 ウィンドウが表示されますので、[新規ホスト(N)...] をクリックします。

     
  5. ホストの設定 ウィンドウが表示されますので、[基本] タブにおいて、龍大内部にある接続先ホストの設定を行います。ホストの設定名、ホスト名、ユーザ名を適切に設定してください。

     
  6. 続いて [拡張] タブをクリックし、「FireWall を使う」と「PASV モードを使う」にチェックします。

     

    [OK] をクリックしてホストの設定 ウィンドウを閉じます。

  7. 上記を実行すると、ホスト一覧 ウィンドウに、「ホストの設定名」で設定した名前が追加されます。

     

    「ホストの設定名」で設定した名前を選択し、[接続(S)] をクリックします。

  8. このように接続できます。

     

注意点

 必ず、まず PuTTY を実行させてから、FFFTP を実行させる必要があります。

UNIX コマンドラインの場合

 次のようになります。ssh を実行させる仮想端末と、ftp を実行させる仮想端末を用意してください。

ssh を実行させる仮想端末

rins.st.ryukoku.ac.jp にユーザ username として接続し、ローカルポート 8021 を rins-ext.st.ryukoku.ac.jp のポート 8021 に forward しています。

% ssh -L 8021:rins-ext.st.ryukoku.ac.jp:8021 -l username rins.st.ryukoku.ac.jp
username@rins.st.ryukoku.ac.jp's password: 
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Fri Apr 11 15:13:56 2003 from ideon.st.ryukok
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.
FreeBSD 4.5-RELEASE-p24 (ASAKAZE-SHIOKAZE) #1: Thu Jan  9 20:16:45 JST 2003

Welcome to FreeBSD!

(中略)      

% 

パスワードを尋いてきますので、入力します。 また、初回接続時にはホスト公開鍵の確認がなされます。 プロトコルバージョン 1 と プロトコルバージョン 2 ではホスト公開鍵が異なりますので注意してください。

プロトコル
バージョン 1
hex 形式
1024 a4:29:8f:1f:12:40:87:58:af:b3:ce:ee:60:fe:79:a3
bubblebabble 形式
1024 xesed-dutur-tuzuk-syzyd-gaget-komoh-tomon-tezug-ninol-vysod-gixox
プロトコル
バージョン 2
RSA 鍵
(通常はこちら)
hex 形式
1024 52:32:d9:b3:5e:06:ab:5a:63:46:d4:3d:19:75:68:5b
bubblebabble 形式
1024 xocar-cyzuz-dazof-suvez-bitid-komof-vekym-hepan-syrav-gotep-lyxex
DSA 鍵 hex 形式
1024 d8:61:26:07:34:91:01:a1:8c:21:68:7c:36:1d:86:90
bubblebabble 形式
1024 xuhod-mumov-sifys-rugip-vazec-zinyt-betys-gegyc-tenat-vamem-buxax
ftp を実行させる仮想端末

example.st.ryukoku.ac.jp にユーザ username として ftp 接続しています。

% ftp localhost 8021
Connected to localhost.
220 asakaze.st.ryukoku.ac.jp FTP proxy (Version V2.1) ready.
Name (localhost:username): username@example.st.ryukoku.ac.jp
331-(----GATEWAY CONNECTED TO example.st.ryukoku.ac.jp----)
331-(220 example.st.ryukoku.ac.jp FTP server (Version 6.00LS) ready.)
331 otp-md5 33 id325204 (OTP required)
Password:
230 User username logged in.
ftp> passive
Passive mode on.
ftp> dir
227 Entering Passive Mode (133,83,4,1,61,174)
150 Opening ASCII mode data connection for '/bin/ls'.
total 1121044
-rw-r--r--    1 kjm   elec          52 Apr 30  2000 .cshrc
-rw-r--r--    1 kjm   elec          52 Apr 30  2000 .profile
(中略)
-rw-r--r--    1 kjm   elec       12897 Oct 20  1997 xpm3icons.tar.gz
drwxr-xr-x    4 kjm   elec         512 Jul 18  2002 zlib
226 Transfer complete.
ftp>

 パッシブ (PASV) モードをサポートする ftp クライアントを使用してください。 上記の例では passive コマンドを利用してパッシブモードに移行していますが、 たとえば Vine Linux 2.6 に付属する ftp コマンドの場合は、-p オプションつきで起動する (ftp -p) と自動的にパッシブモードが選択されるようです。


RINS WWW Administrator <www-admin@www.st.ryukoku.ac.jp>