FTPS(FTP over SSL/TLS)接続でサーバーから切断されるときの原因と対処法
FTPクライアントソフトを使ってFTPS接続すると、たびたびサーバーから切断されてしまいます。
再接続で繋がっても、十数秒でまた切断。
更新ファイルがたくさんあるときなどは作業が止まってしまいます。
ではいったい何故切断されてしまうのか。
その原因と対処法を説明します。
FTPSでサーバーから切断される理由
WinSCPを使ってFTPS接続中にサーバーから切断されると下の画面が表示されます。
FTP接続なら問題ないのですが、SSL通信を行うとこの症状がでます。
何故切断されるのか、答えは Microsoft TechNet にありました。
https://technet.microsoft.com/ja-jp/library/dd939055.aspx
このページの下の方にあるセキュリティで保護された FTP over SSL (FTPS) トラフィックでの Windows ファイアウォールの使用という項目です。
Windows ファイアウォールのステートフル FTP パケット検査機能では、ほとんどの場合 SSL は正しく動作しません。これは、Windows ファイアウォールのステートフル FTP 検査フィルターでは、データ接続を確立する際の暗号化トラフィックを解析できないためです。
とあります。
つまり、FTP接続をSSLで暗号化してしまうことで Windows ファイアウォールが中身を解析できず、怪しいファイルと判断し切断してしまうようなのです。
ですので対策として、FTPS通信がブロックされないようにファイアウォールを設定する必要があります。
FTPS通信を許可するファイアウォールの設定方法
1.まず、FTPサービスが開いたポートを許可するように Windows ファイアウォール を構成します。
コマンドプロンプトを管理者として実行で開きます。
続いて下記のコードを入力してEnterを押します。
netsh advfirewall firewall add rule name="FTP for IIS7" service=ftpsvc action=allow protocol=TCP dir=in
OKと表示されれば、
コントロールパネル > Windows ファイアウォール > 詳細設定 > 受信の規則
にFTP for IIS7が作成されます。
このままでも使用できますが、プログラムを限定させたい場合はプロパティを開きます。
プログラムおよびサービスタブのプログラムに、使っているFTPクライアントソフトを登録します。
私の場合はWinSCPを登録しました。
登録できると、先程の受信の規制のプログラムに表示されます。
2.続いて Windows ファイアウォール がFTPS通信をブロックしないようにステートフルFTP検査フィルターを無効にします。
先程開いたコマンドプロンプトに下記のコードを入力してEnterを押します。
netsh advfirewall set global StatefulFtp disable
こちらもOKと表示されれば作業完了です。
ちなみに有効に戻す場合は、
netsh advfirewall set global StatefulFtp enable
と入力します。
まとめ
この設定を行うと、一度も切断されることなく更新作業が完了しました。
危険なFTP接続よりも、ほとんどのレンタルサーバーで対応しているFTPS接続を使って、安全に効率良く作業ができるほうがいいですもんね。