Windows 7を使用していて、複数のFTPクライアントアプリケーションが問題なく動作しています。ただし、コマンドラインFTPを使用すると、接続してログインできます(ユーザー名とパスワードを入力した後)が、dirまたはlsコマンドを使用すると、常に切断されます。応答は次のとおりです。
リモートホストによって接続が閉じられました。
この問題を解決するにはどうすればよいですか?
通常、この種のことが起こるのは、サーバーが接続を試みたが接続できない場合です。 FTPは元々2つの [〜#〜] tcp [〜#〜] チャネルを使用していました。 1つはコマンド用で、もう1つはデータ転送用です。 dirコマンドを実行すると、データチャネルが使用されます。データチャネルはオンデマンドで確立され、サーバーがユーザーに接続しようとします。
ルーターまたはWindowsファイアウォールによってブロックされている可能性が高いです。 [〜#〜] pasv [〜#〜] モードをサポートするクライアントが必要です。
Internet ExplorerでPASVモードを有効にする ができます。または、別のクライアントを使用します。コマンドラインバージョンでPASVモードを使用できるかどうかはわかりません。これは非常に基本的なクライアントです。
問題のボックスにログインすると、FTP経由でファイルを送信するときに問題が発生しました。ファイル名は作成されますが、ファイルは空でした。私はそれを次のようにして解決しました:
今行くのは良いことです。
Windows FTPコマンドラインクライアントftp.exe
はアクティブなFTPモードのみをサポートします。
アクティブモードでのFTPの設定は、ファイアウォールとNATが原因で、最近では面倒な場合があります。
ローカルファイアウォールまたはNAT=サーバーがクライアントに接続してディレクトリリストのデータ転送接続を確立できなかった可能性があります(ls
またはdir
コマンド)。
または、クライアントはその外部IPアドレスを認識せず、代わりにサーバーに内部アドレスを提供します(PORT
コマンドで)。これは、サーバーが明らかに使用できないアドレスです。
myの記事 アクティブモードのネットワーク構成 を参照してください。
可能であれば、通常クライアント側で追加のセットアップを必要としないパッシブモードを使用する必要があります。
残念ながら、Windows FTPコマンドラインクライアント(ftp.exe
)はパッシブモードをまったくサポートしていません。それは今日それをかなり役に立たなくします。
代わりに、他のWindows FTPコマンドラインクライアントを使用してください。他のほとんどはパッシブモードをサポートしています。
たとえば、WinSCPのデフォルトはパッシブモードであり、 Windows FTPスクリプトをWinSCPスクリプトに に変換するためのガイドがあります。
(WinSCPの作成者です)
Windows 2008サーバーでこの問題が発生しました。
この記事 は、アプリケーション層ゲートウェイサービスを有効にすることを提案しています。これで問題が解決しませんでした。
問題を修正したのは、C:\ Windows\system32\ftp.exeのWindowsファイアウォールに例外を追加することでした。
クライアントトランザクションデータをSQLサーバーにバッチ処理するWindows 7マシンで、サードパーティの [〜#〜] pos [〜#〜] ソフトウェアで同じ問題が発生していました。
クライアントの場所が ISPs 、つまり静的IPアドレスが変更されるまで、問題なく機能しました。コマンドラインFTPコマンドは、最初のログイン以降は機能せず、オンラインで見つけた解決策も、このスレッドも機能しませんでした。
ちょうどキックのために、私はファイアウォール、安価な D-Link router/firewall 、そしてビオラでFTPルールを再作成しました、それは再び機能しているようです。
FTPの問題
Azure NSGおよびサーバーファイアウォールでポートを開く:21,20,4000-40009,990,14147
問題:クライアントがコマンドラインとPowershellからFTPに接続できない
Testuserに接続できますが、ディレクトリ/リストを表示できません
パケットをキャプチャするためにサーバーとラップトップにWiresharkをインストールし、「ftp」と「IP」を使用してWiresharkにフィルターを作成しました。パケットキャプチャは、気象がパッシブモードまたはアクティブモードであり、ソースIPが正しいことを示していません。 (サーバーでプライマリIPとセカンダリIPを構成します)
コマンドプロンプトからftp接続が機能していないことがわかりました。実際のFTPサーバーではなく、11.22.33.44に解決されたftp.abcd.comへの接続を開始しようとすると、同じマシン上で両方の構成で42.33.22.11 IPアドレス11.22.33.44と44.33.22.11が構成されます。ただし、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]をクリックします