FTPSなサーバに接続する(3)

投稿日:

それでは、SmartFTPを使って実際にRaidenFTPdに対しFTP over SSLな接続をしてみます。

ホスト名を解決しています *************...
************* に接続しています。
************* ( IP: ***.***.***.*** PORT: 1021 ) に接続しました。
ソケットは接続されました。ログイン シーケンスを待っています。
220-For the reason only for members, anonymous login can't be performed.
220 Please enter your login name now.
AUTH TLS
234 AUTH Command OK. Initializing SSL connection.
接続しました。暗号化キーを交換しています...
暗号化セッション: 128 bit RC4
SSL 暗号化されたセッションを確立しました。
PBSZ 0
200 PBSZ Command OK. Protection buffer size set to 0.
USER xxxxxx
331 Password required for xxxxxx .
PASS (hidden)
230-xxxxxx (***.***.***.***) logged in : 2003/07/14 13:02

と、↑こんな感じでSSLで接続します。Raidenは高速化のためか、なるべく(高速な)RC4暗号を使いたがるようです。

が、WindowsサーバはフツーSJISで、SmartFTPはUTF-8(Unicode)で動作してますんで、こっから後は

230-? 1 l?[U[IC??B
230-S5[U[?????\?B
230-? 2 OC???AT[o[??OC?~?B
230-i??dOC?o?j
230-???603.73mbAbv[hA1841.77mb_E[h?B

↑こんな感じとなり、日本語メッセージが読めません(^_^;)

その後、

230 User xxxxxx logged in.
SYST
215 UNIX Type: L8 , CP:932
FEAT
211-Extensions supported:
SIZE
MDTM
MDTM YYYYMMDDHHMMSS filename
LIST -laT
REST STREAM
XCRC filename;start;end
XMD5 filename;start;end
TVFS
CLNT client_type
LANG EN;FR;JA;DE;IT;SV;ES;RU;ZH-TW;ZH-CN
AUTH SSL
AUTH TLS
PROT
PBSZ
SSCN
UTF8
211 END
FTPサーバーは、次のソフトウェアであると検知しました。: RaidenFTPd
CLNT SmartFTP 1.0.976
213 client type set to SmartFTP 1.0.976.
OPTS UTF8 ON
220 UTF8 OPTS ON.

↑こんなコマンドをやりとりしてサーバをUTF-8化する→以後のメッセージは問題なく読めるようになるんすけども、それ以前に出てくるWelcomeメッセージはダメでした。

調査の結果、SmartFTPとNextFTPはUTF-8対応なんで、クライアントをこれらに限定するなら「サーバのメッセージを全てUTF-8化する」ことで対応出来るみたいです。

ただし、他のクライアントは未だUnicodeダメなのが多い→以後、サーバに非Unicodeクライアントで接続しても日本語メッセージ一切読めなくなるという副作用が出ます(^^;; 

あと、Unicodeで動作するSmartFTPクライアントとSJISで動作するその他クライアントでは動作文字コードが異なる→同時ログインした場合、whoコマンドやショートメッセージで相互に日本語が通らないことも確認しました。(個別には問題なく動作。相互の情報が上手く行来きしないだけ)

で、これはどーもRaidenのバグっぽいんですが、

226-現在のディレクトリは / 残り容量は 30965 mb
226-接続中のユーザー数:3
226 Transfer finished successfully. Data connection closed .

↑SJIS/非SSLならちゃんと展開されるメッセージ変数%n(接続中のユーザ数)が、

150 Opening ASCII data connection for ls / using SSL/TLS.
接続しました。暗号化キーを交換しています...
暗号化セッション: 128 bit RC4
SSL 暗号化されたセッションを確立しました。
852 バイトの受信に成功しました。 (852 B/s) (00:00:01)
226-現在のディレクトリは / 残り容量は 30965 mb
226-接続中のユーザー数:%n
226 Transfer finished successfully. Data connection closed .

↑Unicode/SSLだと正常に展開されず、%nのまま表示されてます。あぅ。他にもいくつかそーゆー「Unicode/SSL接続では展開されない変数」があるみたい。

他にもFTPSと同時にFTPを公開するとFTP側ではPASVのポート指定が上手くいかずPASV接続に失敗するとか、いろいろと細かい問題点が発覚してます。RaidenFTPdでのFTPSは非常に手軽なソリューションですが、それなりに問題もある模様。