web-dev-qa-db-ja.com

200 PORTコマンドが成功しました。 PASVの使用を検討してください。 425接続の確立に失敗しました

Ubuntu 12.04 LTSにFTPサーバーをセットアップしました。

今、コマンドラインを介してWindows 7からFTPサーバーに接続しようとするとftp.exe、接続に成功しましたが、ディレクトリのリストを取得できません。エラーが出る

200 PORT command successful. Consider using PASV.
425 Failed to establish connection. 
17
CY5

passiveを使用する前に、lsコマンドを使用してみてください。

FTPクライアントから、FTPサーバーがパッシブモードをサポートしているかどうかを確認するには、ログイン後にquote PASV

以下は、パッシブモードのオンとオフを切り替えるvsftpdサーバーへの接続例です。

vsftpd with pasv_enable=NO

# ftp localhost
Connected to localhost.localdomain.
220 (vsFTPd 2.3.5)
Name (localhost:john): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quote PASV
550 Permission denied.
ftp> 

vsftpd with pasv_enable=YES

# ftp localhost
Connected to localhost.localdomain.
220 (vsFTPd 2.3.5)
Name (localhost:john): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quote PASV
227 Entering Passive Mode (127,0,0,1,173,104).
ftp> 
12
Shannon

FTPをアクティブモードで使用しています。

FTPをアクティブモードで設定することは、ファイアウォールとNATのために、最近では面倒な場合があります。

ローカルファイアウォールまたはNATが原因で、サーバーがクライアントに接続してデータ転送接続を確立できなかった可能性があります。

または、クライアントは外部IPアドレスを認識せず、代わりにサーバーに内部アドレスを提供します(PORTコマンドで)。サーバーは明らかにそれを使用できません。ただし、vsftpdはデフォルトでFTP制御接続の送信元アドレスとは異なるデータ転送アドレス(port_promiscuousディレクティブ)。

myの記事 アクティブモードのネットワーク構成 を参照してください。


可能であれば、通常はクライアント側で追加のセットアップを必要としないため、パッシブモードを使用する必要があります。それは、サーバーが「PASVを使用することを検討する」ことによってあなたに提案したことでもあります。 PASVは、パッシブモードに入るためのFTPコマンドです。

残念ながら、Windows FTPコマンドラインクライアント(ftp.exe)は、パッシブモードをまったくサポートしていません。最近ではかなり役に立たなくなります。

代わりに、他のサードパーティのWindows FTPコマンドラインクライアントを使用してください。他のほとんどはパッシブモードをサポートしています。

たとえば、 WinSCP FTPクライアント はパッシブモードにデフォルト設定され、 Windows FTPスクリプトからWinSCPスクリプト に変換するためのガイドがあります。

(私はWinSCPの著者です)

12
Martin Prikryl

実際にはウィンドウファイアウォールが接続をブロックしているため、これらのコマンドを管理者からcmd.exeに入力する必要があります。

1)netsh advfirewall firewall add rule name="FTP" dir=in action=allow program=%SystemRoot%\System32\ftp.exe enable=yes protocol=tcp

2)netsh advfirewall firewall add rule name="FTP" dir=in action=allow program=%SystemRoot%\System32\ftp.exe enable=yes protocol=udp

何かがうまくいかない場合、これで元に戻すことができます:

1)netsh advfirewall firewall delete rule name="FTP" program=%SystemRoot%\System32\ftp.exe

4

パッシブモードを使用する必要があります。

Linuxクライアントを使用している場合は、pftpまたはftp -pを使用します。

man ftpから:

-p    Use passive mode for data transfers. Allows use of ftp in environments where a firewall prevents connections from the outside world back to the client machine. Requires that the ftp server support the PASV command. This is the default if invoked as pftp.
0
Rusher