ftp を練習していたのですが、問題が発生しました: ls コマンドが ftp> で動作しません。なぜでしょうか? 2 つのリモート サーバーで確認しましたが、どちらでも ls は動作せず、ls を実行すると異なる出力が表示されました。2 つのリモート ボックスについては以下を参照してください。
以下は、今日 vsftpd をインストールしたリモート サーバーを示しています。
ravbholua@ravbholua-Aspire-5315:~$ ftp rs
Connected to ravi.com.
220 (vsFTPd 3.0.2)
Name (rs:ravbholua):
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/ravbholua"
ftp> ls
500 Illegal PORT command.
ftp: bind: Address already in use
ftp>
以下は、いくつかのファイルを送信する必要がある別のリモート マシン用です。しかし、ftp> の ls が機能しないので、ファイルが転送されたかどうかは ls なしでは確認できないため、ローカル ボックスからそのボックスにファイルをどのように転送するのでしょうか。
ravbholua@ravbholua-Aspire-5315:~$ ftp 125.21.153.140
Connected to 125.21.153.140.
220---------- Welcome to Pure-FTPd [TLS] ----------
220-You are user number 1 of 10 allowed.
220-Local time is now 04:34. Server port: 21.
220-This server supports FXP transfers
220 You will be disconnected after 2 minutes of inactivity.
Name (125.21.153.140:ravbholua): peacenews
331 User peacenews OK. Password required
Password:
230 OK. Current restricted directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200-FXP transfer: from 123.63.112.168 to 10.215.10.80
200 PORT command successful
上記のマシンでは、ftp> で ls を実行するとプロンプトが戻らなくなることに注意してください。
両方のリモートマシンで、ftp で ls を実行すると異なる出力が得られました。
答え1
FTPは古いプロトコルです。2つのTCP接続に依存しています。制御接続コマンドが交換される場所、およびデータ接続ファイルの内容と、 などのコマンドの出力にも使用されますls
。ここで起こっていることは、制御接続は確立されているが、データ接続が確立されていないということです。
デフォルト (アクティブ モード) では、送信側から受信側へのデータ接続が確立されます。 の出力ではls
、データはサーバーから送信されるため、サーバーはクライアントへの接続を開こうとします。これは FTP が発明されたときにはうまく機能しましたが、現在ではクライアントはファイアウォールや NAT の背後にあることが多く、アクティブ FTP をサポートしているかどうかはわかりません。パッシブ モードに切り替えます。パッシブ モードでは、クライアントが常にデータ接続を開始します。
デフォルトでパッシブ モードに切り替える方法については、コマンドのマニュアルを確認してくださいftp
。 1 回限りの場合は、passive
通常、コマンドを入力するだけでうまくいきます。
答え2
「ftp 500 不正な PORT コマンド」の完全な解決策。次のリンクをクリックしてください。http://www.ucodice.com/articles/ftp-500-illegal-port-command/。
抜粋
FTP サーバーに接続しようとすると、500 不正なポート コマンドが返されます。この問題は、FTP プログラムがパッシブ モードに設定されていない場合に発生する可能性があります。
次のようなエラー スニペットが表示される場合があります。
COMMAND:> [3/11/2015 1:17:05 PM] PORT 192,168,0,101,196,215
[3/11/2015 1:17:05 PM] 500 Illegal PORT command.
ERROR:> [3/11/2015 1:17:05 PM] Syntax error: command unrecognized.
ERROR:> [3/11/2015 1:17:05 PM] Failed to establish data socket.
この問題を解決するには、FTP サーバーの構成ファイルでポートまたは FTP を定義し、IP アドレスまたは PASV サーバーを定義します。
以下の設定については構成ファイルを確認してください。
pasv_enable=YES
pasv_promiscuous=YES
pasv_max_port=Enter the max port range allowed on your server.
pasv_min_port=Enter the min port range allowed on your server.
pasv_address=Ip Address of your server.
その後、FTP サービスを再起動し、FTP 接続を確認します。