Windows に最初から入っているコマンド版の FTP(ftp.exe)で、ログインまではできるのに ls・mget・mput を打つと固まってタイムアウトする――。昔、私も実際にハマった症状です。原因と対処をまとめました。
症状
openでサーバーに接続し、ユーザー名・パスワードでログインはできるlsやdirでファイル一覧を出そうとすると止まるmget・mputも同じように止まり、しばらくしてタイムアウトする
原因:ftp.exe は「アクティブモード」しか使えない
FTP は、命令をやりとりする通信と、ファイル一覧やファイル本体を送る通信を別々に使います。Windows の ftp.exe は「アクティブモード」という方式だけに対応していて、データ用の通信はサーバー側からパソコンに向かってつなぎに来ます。
ところが、Windows のファイアウォール(Windows Defender ファイアウォール)が ftp.exe の受信を許可していないと、この「外から入ってくる通信」がブロックされます。その結果、ログインはできても一覧やファイルの転送だけが止まる、という状態になります。
対処1:ファイアウォールで ftp.exe の通信を許可する
- スタートメニューで「Windows Defender ファイアウォール」を開く
- 左の「Windows Defender ファイアウォールを介したアプリまたは機能を許可」を選ぶ
- 「設定の変更」→「別のアプリの許可」から
C:\Windows\System32\ftp.exeを追加する - 使っているネットワーク(プライベート/パブリック)にチェックを入れて OK
最初に ftp.exe を実行したときに出る「アクセスを許可しますか?」という画面で、許可せずに閉じてしまっていると、この状態になりやすいです。
対処2:パッシブモードに対応した FTP ソフトを使う
今から使うなら、ftp.exe ではなく、パッシブモードや SFTP(暗号化された転送)に対応したソフトを使うほうが確実です。代表的なのは次のようなソフトです。
- WinSCP:SFTP・FTP に対応。エクスプローラーのような画面で使える
- FileZilla:Windows・Mac で使える定番ソフト
- FFFTP:昔からある国産ソフト(オープンソース版が公開されている)
レンタルサーバーによっては、ブラウザから使える「ファイルマネージャ」も用意されています。ちょっとしたファイルの差し替えなら、それで済むことも多いです。
そもそも FTP は暗号化されていない
FTP は、パスワードも含めて通信が暗号化されません。今は、レンタルサーバーでも SFTP や FTPS(暗号化された FTP)が使えることがほとんどなので、できるだけそちらを使いましょう。
PR
SFTP やファイルマネージャが使えるレンタルサーバー
このブログでも使っているエックスサーバーは、SFTP での接続や、ブラウザから使えるファイルマネージャに対応しています。FTP ソフトがうまく動かないときでも、ブラウザからファイルを差し替えられて便利です。
まとめ
ftp.exe でログインできるのに一覧や転送だけ止まるときは、まず Windows のファイアウォールで ftp.exe の受信を許可してみてください。それでもだめなら、パッシブモードや SFTP に対応したソフトに切り替えるのが近道です。

コメント