Windows : FTPSで大量のファイルを転送すると接続が切れる

FTPS(FTP over SSL)接続で大量のファイルをアップロード・ダウンロードしていると、途中で接続が切れるという現象に長年悩まされていた。FTPだと問題ないんだけど、セキュリティ上FTPは使いたくない。

ずっと相手側のサーバがトラフィックに制限をかけてるんじゃないかと疑っていたが、Windowsのファイアウォールを切ってみたら問題が発生しなかったので、どうもWindowsのファイアウォール周りが原因らしい。
で、その線でググってみたら、あっさり回答が見つかった。

つまり、WindowsのファイアウォールはFTP通信を監視してるんだけど、そのFTPの中身をSSLで暗号化してしまうと中身の監視ができなくなって通信を切ってしまう、ということか。……セキュリティを高めた結果、かえって怪しまれることになるとは……。
ということで、このファイアウォールによるFTP通信の監視をやめさせればいいわけだ。

FFFTPを使ってる場合はメニューの「ツール」に「WindowsファイアウォールのステートフルFTPフィルタの設定」があるので、ここから無効にすればOK。

sftp-1

他のアプリを使ってる場合は、コマンドプロンプトを管理者権限で起動した後、以下のコマンドを打ち込むと無効にできる。

netsh advfirewall set global StatefulFTP disable

有効に戻したい場合は以下を。

netsh advfirewall set global StatefulFTP enable

有効か無効か確認したい場合は次のコマンドを打ち込んで、StatefulFTP という項目の部分をチェック。

netsh advfirewall show global

sftp-2

さらにロリポップサーバの場合は、ホストの設定で以下の2つをしておくと良いようです。

  • 「PASVモードを使う」をオン
    sftp-3
  • 「可能であればMLSDコマンドで一覧を取得」をオフ
    sftp-4