2012-03-09

Windows: telnet FTP接続 + NLSTの確認

FTPサーバでNLSTが動いているのか確認したいという話になったのでWindowsでの確認方法を簡単にまとめました(確認したクライアントはWindows 7 Home Premium + telnet、サーバはCentOS 5.6 + ProFTPD 1.3.1です)。

まずコマンドプロンプトをひとつ立ちあげて下記のように入力します(強調されている箇所。返ってくるメッセージはサーバによって変わります)。

C:\Users\user>telnet ホスト名 ポート番号(だいたい21)

220 ProFTPD 1.3.1 Server (ProFTPD) [xxx.xx.xxx.xx]
USER ユーザー名
331 Password required for xxxxx
PASS パスワード
230 User xxxxx logged in
PASV
227 Entering Passive Mode (xxx,xx,xxx,xx,a,b).
NLST

PASVの応答メッセージで数字(上記のxxx,xx,xxx,xx,a,bの箇所。xxx,xx,xxx,xxはサーバのIPアドレス。a,bはランダムな数字)が出てきたらNLSTの結果の受信用にコマンドプロンプトを立ち上げ、ホスト名と共にa * 256 + bの値をポート番号として入力して接続します(xxx,xx,xxx,xx,212,11 なら 212 * 256 + 11 = 54283)。

C:\Users\user>telnet ホスト名 ポート番号

接続すると新しく立ち上げた画面にはファイルとディレクトリの一覧が表示され、元の画面には例えば下記のように表示されます。

150 Opening BINARY mode data connection for file list
226-Transfer complete
226 Quotas off

(余談)

Windowsのftpコマンド(ftp.exe)でも確認は可能でした(コマンド送信用にftp.exe, 受信用にtelnetになるだけですが…)。ftpコマンドの場合PASVやNLSTなどはそのまま送信することはできませんが、quoteかliteralを使うと送信できました(quote PASVやquote NLST)。また ftp -d ホスト名 として起動するとlsやcdなどを実行した時の実際に送信されている生コマンドを表示してくれるので諸々の確認がしやすくなります。