web-dev-qa-db-ja.com

FTP "425 Ca n't open data connection"はコマンドプロンプトを使用しているときにのみ発生します

私のコンピュータはすべて1台のルーターの背後にあります。それらの1つでFileZillaサーバーを実行しています。バッチスクリプトとWindowsの組み込みftp.exeを使用して、サーバーへのアップロードを自動化しようとしています。ルーターの外部からサーバーにアクセスできるように動的DNSサービスを設定し、ルーターでサーバーへのポート転送を設定しました。 Google Chrome、Windowsエクスプローラー、FileZillaクライアントを使用して問題なく接続および転送できます。ただし、ftp.exeを(手動またはバッチスクリプトで)使用しようとすると、サーバーに接続できますが、データ接続(LIST、STOR、またはRETR)を開くようなことをしようとすると、次のエラーが発生します。データ接続を開けません。両方のコンピューターのファイアウォールでftp.exeを許可しました。何が起こっているのか、どうすれば修正できるのか?誰かが移植可能な独立した(他のファイルを持たないexeファイルのみ)コマンドラインクライアントを知っている場合は、ftp.exeを使用する必要はありません。

[〜#〜] edit [〜#〜]私のISPは、21を含む多くのポートとその範囲の他のいくつかのポートをブロックしていることを知っています。これはすべてポート2121で設定されており、パッシブポートは2122-2142に設定されており、これらはすべてルーターで転送されています。おそらく、ftp.exeはデータ接続に特定のポートのみを使用し、ISPはこれをブロックしますか?もしそうなら、これをどのように変更しますか?

8
Garrett

通常のアクティブFTPは、転送に別のサーバー起動データ接続を使用し、通常のポート21接続のみを制御チャネルとして使用します。ただし、クライアントがファイアウォールの背後にある場合、ファイアウォールはこの接続をブロックする可能性があります。 Chrome、Explorer、FireZillaなどは、元のクライアントが開始した接続がコントロールチャネルとデータチャネルの両方として使用されるパッシブモードを試すのに十分スマートだと思います。

WindowsのデフォルトのCLI FTPクライアントはパッシブモードをサポートしていないようです。したがって、 NcFTP に切り替える必要があります。または、おそらくより良いオプションは、代わりにSFTPを使用することです。 FTPは安全ではなく、実際にはLANでのみ使用されます。 SFTPは完全に暗号化されており、データとコマンドに単一のチャネルのみを使用します。 CLI SFTPクライアントが必要な場合は、 [〜#〜] psftp [〜#〜] が適切なオプションです。

5
Lèse majesté

私にもこの問題がありました。解決策は、アンチウイルスのファイアウォール(私の場合はMcAfee)を停止することで、FTPのポートをブロックしていました。

0
Sfalcini

Windows FTP CLIはパッシブモードをサポートします。 「quote pasv」を使用して、パッシブモードに入ります。

0
George Rios