
私のコンピューターはすべて 1 台のルーターの背後にあります。そのうちの 1 台で FileZilla サーバーを実行しています。
バッチ スクリプトと Windows の組み込み ftp.exe を使用して、サーバーへのアップロードを自動化しようとしています。ルーターの外部からサーバーにアクセスできるようにダイナミック DNS サービスを設定し、ルーターでサーバーへのポート転送を設定しました。Google Chrome、Windows エクスプローラー、FileZilla クライアントを使用して、問題なく接続して転送できます。
ただし、ftp.exe を使用しようとすると (手動またはバッチ スクリプトで) サーバーに接続できますが、データ接続を開く操作 ( LIST
、、STOR
またはRETR
) を実行しようとすると、次のエラーが発生します。425 Can't open data connection.
両方のコンピューターのファイアウォールで ftp.exe を許可しました。何が起こっているのか、またはこれを修正する方法はありますか? ポータブルで独立した (他のファイルがない exe のみの) コマンド ライン クライアントを知っている方がいれば、ftp.exe を使用する必要はありません。
編集私の ISP は、21 番ポートやその範囲内の他のポートを含む多くのポートをブロックしていることを知っています。これはすべてポート 2121 に設定されており、パッシブ ポートは 2122 ~ 2142 に設定されており、これらすべてがルーターで転送されています。ftp.exe
は、データ接続に特定のポートのみを使用するため、ISP がそれをブロックしている可能性があります。もしそうなら、これをどのように変更すればよいでしょうか。
答え1
通常のアクティブ FTP は、転送にサーバーが開始する別のデータ接続を使用し、通常のポート 21 接続のみを制御チャネルとして使用します。ただし、クライアントがファイアウォールの背後にある場合、ファイアウォールはこの接続をブロックする可能性があります。Chrome、Explorer、FireZilla などは、元のクライアントが開始した接続が制御チャネルとデータ チャネルの両方として使用されるパッシブ モードを試すほど賢いのではないかと思います。
WindowsのデフォルトのCLI FTPクライアントはパッシブモードをサポートしていないようです。そのため、FTPサーバあるいは、おそらくより良い選択肢は、代わりにSFTPを使用することです。FTPは安全ではなく、実際にはLANでのみ使用できます。SFTPは完全に暗号化されており、データとコマンドに1つのチャネルのみを使用します。CLI SFTPクライアントが必要な場合は、FTPサーバー良い選択肢です。
答え2
私も同じ問題を抱えていました。解決策は、アンチウイルス (私の場合は McAfee) のファイアウォールを停止することでした。ファイアウォールが FTP のポートをブロックしていたのです。
答え3
Windows FTP CLI はパッシブ モードをサポートしています。パッシブ モードに入るには、「quote pasv」を使用します。