回答:
通常、このタイプのことが起こるのは、サーバーがあなたに接続しようとしたができない場合です。FTPはもともと2つのTCPチャネルを使用していました。1つはコマンド用で、もう1つはデータ転送用です。dirコマンドを実行すると、データチャネルが使用されます。データチャネルはオンデマンドで確立され、サーバーはユーザーに接続しようとします。
ほとんどの場合、ルーターまたはWindowsファイアウォールによってブロックされています。PASVモードをサポートするクライアントが必要です。
あなたはできるInternet ExplorerのPASVモードを有効にします。または、別のクライアントを使用します。コマンドラインバージョンがPASVモードを使用できるかどうかはわかりません。非常に基本的なクライアントです。
問題のボックスにログインすると、FTP経由でファイルを送信する際に問題が発生しました。ファイル名は作成されますが、ファイルは空でした。以下を実行して解決しました。
今行くのは良いことです。
Windows FTPコマンドラインクライアントftp.exe
は、アクティブFTPモードのみをサポートします。
FTPをアクティブモードで設定することは、ファイアウォールとNATのために、最近では面倒な場合があります。
サーバーがディレクトリリスト(ls
またはdir
コマンド)のデータ転送接続を確立するためにクライアントに接続できなかったのは、ローカルファイアウォールまたはNATが原因である可能性があります。
または、クライアントは外部IPアドレスを認識せず、代わりにサーバーに内部アドレスを提供します(PORT
コマンドで)。サーバーは明らかに使用できません。
私の記事「アクティブモードのネットワーク構成」を参照してください。
可能であれば、通常はクライアント側で追加のセットアップを必要としないため、パッシブモードを使用する必要があります。
残念ながら、Windows FTPコマンドラインクライアント(ftp.exe
)はパッシブモードをまったくサポートしていません。最近ではかなり役に立たなくなります。
代わりに、他のWindows FTPコマンドラインクライアントを使用してください。他のほとんどはパッシブモードをサポートしています。
たとえば、WinSCPのデフォルトはパッシブモードであり、Windows FTPスクリプトをWinSCPスクリプトに変換するためのガイドが用意されています。
(私はWinSCPの著者です)
winscp.com
し、winscp.exe
同じフォルダにあります。エラーメッセージには、フォルダ内でのwinscp.com
検索が明確に示されていると思いwinscp.exe
ます。winscp.net/eng/docs/executables
FTPの問題
Azure NSGおよびサーバーファイアウォールのポートを開く:21,20,4000-40009,990,14147
問題:クライアントがコマンドラインおよびPowershellからftpに接続できない
testuserで接続できますが、ディレクトリ/リストは表示できません
サーバーとラップトップにWiresharkをインストールして、パケットをキャプチャします。「ftp」と「IP」を使用して、wiresharkにフィルターを作成しました。(サーバーでプライマリIPとセカンダリIPを構成します)
ftp接続がコマンドプロンプトから機能していないことがわかりました。実際のFTPサーバー44.33.22.11 IPアドレス11.22.33.44と44.33.22.11ではなく、11.22.33.44に解決されていたftp.abcd.comへの接続を開始しようとすると、両方が同じマシン上で構成されます。ただし、DNSはプライマリではなくセカンダリFTP IPに解決されていました
最初に、11.22.33.44へのFTP接続が正常に機能しており、これらの接続がアクティブな接続であることもわかりました。ここでは、パッシブモードが機能することを確認できませんでした。また、Commadプロンプトから11.22.33.44への接続を開始しているときに、 'dir'コマンドを指定するとセッションがフリーズしますが、FileZillaやWinscpなどの他のftpクライアントでも同じことが機能します。
WinSCPとFileZillaでテストしてみましたが、パッシブモード接続が正常に機能し、アクティブではないことがわかりました。これは予期される動作ではありません。認証が成功した後、デバイスから「dir」コマンドが機能しない理由を確認しました。Windowsファイアウォールが接続をブロックしていることがわかりました。ファイアウォールを無効にし、すべてが正常に機能するようになりました。ファイアウォールルールを作成した後、最後に同じことを確認しました。問題は解決しました。ファイアウォールを無効にした後でもディレクトリリストにスタックしたシステムが1つありましたが、これはそのシステム内の問題であるか、外部要因によって接続がブロックされている可能性があります。無効にした後、私たちのほとんどは問題なく仕事をすることができます。
マシンで設定を行う必要がありますコントロールパネル→Windowsファイアウォール→詳細設定→受信ルールに移動します。名前列をダブルクリックして名前で並べ替えます。「ファイル転送プログラム」という2つのルールが表示されるまで下にスクロールします。これらはPCでブロックするように設定されています(大きな赤い丸と線)ルールをダブルクリックします[全般]タブの[アクション]で、[接続を許可する]に設定します[OK]をクリックします