Windows の ftp.exe で ls・mget・mput がタイムアウトするときの対処法

ノートパソコンとサーバーの間でファイルをやりとりするイラスト Windows

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 の通信を許可する

  1. スタートメニューで「Windows Defender ファイアウォール」を開く
  2. 左の「Windows Defender ファイアウォールを介したアプリまたは機能を許可」を選ぶ
  3. 「設定の変更」→「別のアプリの許可」から C:\Windows\System32\ftp.exe を追加する
  4. 使っているネットワーク(プライベート/パブリック)にチェックを入れて OK

最初に ftp.exe を実行したときに出る「アクセスを許可しますか?」という画面で、許可せずに閉じてしまっていると、この状態になりやすいです。

会社のネットワークなどでは、ルーターや社内のファイアウォールでアクティブモードの通信が止められていることもあります。その場合は、パソコン側の設定だけでは解決しないので、次の対処2がおすすめです。

対処2:パッシブモードに対応した FTP ソフトを使う

今から使うなら、ftp.exe ではなく、パッシブモードや SFTP(暗号化された転送)に対応したソフトを使うほうが確実です。代表的なのは次のようなソフトです。

  • WinSCP:SFTP・FTP に対応。エクスプローラーのような画面で使える
  • FileZilla:Windows・Mac で使える定番ソフト
  • FFFTP:昔からある国産ソフト(オープンソース版が公開されている)

レンタルサーバーによっては、ブラウザから使える「ファイルマネージャ」も用意されています。ちょっとしたファイルの差し替えなら、それで済むことも多いです。

そもそも FTP は暗号化されていない

FTP は、パスワードも含めて通信が暗号化されません。今は、レンタルサーバーでも SFTP や FTPS(暗号化された FTP)が使えることがほとんどなので、できるだけそちらを使いましょう。

PR

サーバー・ネットワークの本を探す

楽天でサーバー入門書を探す

PR

SFTP やファイルマネージャが使えるレンタルサーバー

このブログでも使っているエックスサーバーは、SFTP での接続や、ブラウザから使えるファイルマネージャに対応しています。FTP ソフトがうまく動かないときでも、ブラウザからファイルを差し替えられて便利です。

エックスサーバーの公式サイトを見る

まとめ

ftp.exe でログインできるのに一覧や転送だけ止まるときは、まず Windows のファイアウォールで ftp.exe の受信を許可してみてください。それでもだめなら、パッシブモードや SFTP に対応したソフトに切り替えるのが近道です。

コメント

タイトルとURLをコピーしました