Q. Web ページの更新のためにインターネットから安全に ftp で接続すべく、 ssh の port forwarding を使おうと思ってはまりました。パスワードは 暗号化に成功しますが、データ転送の暗号化がうまくできません。 A. クライアント側の OS によって以下のような方法があります。 1) Unix 普通の ftp(1) を ssh(1) の TCP port forwarding でちゃんと動かすのは 面倒なので、hsftp(1) か sftp(1) を使うのがいいでしょう。FreeBSD では、 どちらも Ports Collection の ports/ftp/hsftp 及び ports/ftp/sftp にあ ります。 hsftp(1) は、内部で ssh(1) と scp(1) のフロントエンドとして働き、コピー などのコマンドは、ftp(1) とほとんど同じです。ただし ssh-agent(1) など を使って、scp(1) をパスワード(パスフレーズ)の入力なしに実行できるよう にしておく必要があります。 sftp(1) も hsftp とほぼ同様ですが、リモート側に sftpserv というプログ ラムが必要になります。もし、リモート側にインストールされてなければ、 交渉して入れてもらうか自分で用意しましょう。なお、OpenSSH についてくる sftp-server(8) は SSH Communications Security 社 の ssh (いわゆる 「本家ssh」) バージョン2 についてくる sftp に対応するためのもので、 ports/ftp/sftp についてくる「sftp サーバ」(sftpserv) とは別物です。 FreeBSD 4.2R からは付属しますが互換性はありません。ややこしいのは、 どちらも「sftp」を名乗っていることです。 ftp と比べるとサポートされているコマンドは少ないですが、 sftp> help Supported commands are: ? help open close get mget put mput cd pwd ls dir mdir mkdir rmdir rename rm delete mdelete lcd exec quit exit bye binary ascii image version これぐらいのコマンドが使えます。これは、hsftp でもだいたい同じです。 また、ports/net/rsync を ssh 経由で使えばディレクトリの内容をまとめて アップデートすることができます。 % rsync -auzvC --delete --rsh=ssh . user@server:public_html 2) Java MindTerm を使えば,FTP-tunneling は簡単に出来ます。もちろん、Control port (21/tcp) だけでなく Data port (default:20/tcp) も SSH 経由になり ます。SCP の機能も入っているので,そちらを使ってもいいですが、Web ページ の更新には FTP が使えたほうが便利です。 <URL:[moved?] http://www.appgate.org/products/mindterm/> v1.2.1 までのライセンスは GPL ですが,v2 以降が GPL になるかどうか決まっ ていないようです。v2 以降は SSH2 に対応します。2000年12月現在 v1.9.9pre2 が、バイナリのみ公開されています。 JAVA でインプリメントされているので,java1.1 以降に対応した JVM があれ ば OS は問いません。こちらでは,Linux, Windows, Macintosh で動作する ことを確認しています。 3) Windows 現在では MindTerm を使うのが一番簡単そうな方法ですが、TeraTermPro に ttssh を組み合わせた環境では、scp 機能がないため次のような方法が用いら れてきました。 3-a) 単純に scp をインストールして済ます。 <URL:http://www.jaist.ac.jp/~uchida-t/ssh/> <URL:http://bmrc.berkeley.edu/people/chaffee/winntutil.html#sshnt> 3-b) Delegate を併用する方法です。 次の Web ページが TeraTerm + ttssh の使い方として、よくまとまってると 思います。この中で ftp については「書かないけど」の部分ですね。 <URL:http://www.netlab.is.tsukuba.ac.jp/~one/ssh/#H> 以下に [FreeBSD-users-jp 49239] を元に説明します。hostA がローカル側、 hostB がリモートホスト、[a],[b] は Unix では 1024 以上の空いてる port ですが、Windows では 1024 の制限はないようです。以下の説明では [a]=21, [b]=8021 としています。 hostA> ssh -L [a]:localhost:[b] -L [b-1]:localhost:[b-1] hostB o メニューバー Setup → SSH Forwarding で以下のように設定 Local 21 to remote "localhost" port 8021 Local 8020 to remote "localhost" port 8020 o hostA から hostB に ttssh でログイン hostB> delegated -P[b] SERVER=ftp://localhost:21/ RELIABLE=localhost o hostB のプロンプトで delegated を実行 % delegated -P8021 SERVER=ftp://localhost:21/ RELIABLE=localhost hostA> ftp -p localhost [a] o hostA から localhost の port 21 に passive (PASV) モードで ftp 接続 Delegate は passive mode だと [b-1] にデータ転送用の port を用意して くれるようです。このスレッドには書いてませんが、セキュリティ的には delegated のオプションに TIMEOUT=900 ぐらいはつけておいたほうが吉だと 思います。 4) おまけ SSL 対応の wu-ftp です。 <URL:http://www.average.org/ftp/wuftp+SSL/> 下記の URL に SSL 関係のリンク集がまとまっています。 <URL:http://www.infoscience.co.jp/technical/openssl/related/apps.html> あと、ssh ではないですが Zebedee というのもあります。 <URL:http://www.winton.org.uk/zebedee/> <URL:[BROKEN!] http://www.arekore.org/zebedee/>
グループ名: ssh