コマンドラインFTP機能が機能しない


12

Windows 7を使用していますが、複数のFTPクライアントアプリケーションが問題なく動作しています。ただし、コマンドラインFTPを使用すると、接続してログインできます(ユーザー名とパスワードを入力した後)が、dirまたはlsコマンドを使用すると常に切断されます。応答は次のとおりです。

リモートホストによって接続が閉じられました。

この問題を修正するにはどうすればよいですか?


ファイアウォールでポート20、21を開きます。
ショーンパーキンス

回答:


13

通常、このタイプのことが起こるのは、サーバーがあなたに接続しようとしたができない場合です。FTPはもともと2つのTCPチャネルを使用していました。1つはコマンド用で、もう1つはデータ転送用です。dirコマンドを実行すると、データチャネルが使用されます。データチャネルはオンデマンドで確立され、サーバーはユーザーに接続しようとします。

ほとんどの場合、ルーターまたはWindowsファイアウォールによってブロックされています。PASVモードをサポートするクライアントが必要です。

あなたはできるInternet ExplorerのPASVモードを有効にします。または、別のクライアントを使用します。コマンドラインバージョンがPASVモードを使用できるかどうかはわかりません。非常に基本的なクライアントです。


ありがとう、マット。コマンドラインFTPクライアントはデフォルトでパッシブモードを使用すると思っていましたが、WindowsコマンドラインFTPが実際にパッシブモードを除外しているという複数の投稿を見つけました。IEはFTPのマシンで常に正常に動作します。コマンドラインを使用して、FTPサーバーからの生データを調べたいだけです。
香港

実験として、Internet ExplorerでPASVを有効または無効にすると、違いが生じるかどうか、または類似または同じエラーが発生するかどうかを確認できます。
barlop

1
ftp> PASV-無効なコマンド。(Windows 7 Ent。)。この答えはまさに仕事で起こることです。
Bratch

6
QUOTE PASV
JosephStyons

5

問題のボックスにログインすると、FTP経由でファイルを送信する際に問題が発生しました。ファイル名は作成されますが、ファイルは空でした。以下を実行して解決しました。

  • [コントロールパネル]→[Windowsファイアウォール]→[詳細設定]→[受信の規則]に移動します
  • 名前で並べ替えるには、名前列をダブルクリックします
  • 「ファイル転送プログラム」と呼ばれる2つのルールが表示されるまで下にスクロールします。これらは私のPCでブロックするように設定されていました(線が入った大きな赤い円)
  • ルールをダブルクリックします
  • 上の一般タブ、下のアクション、に設定し、接続を許可します
  • クリック OK
  • 他のルールに対してこれを行います

今行くのは良いことです。


これを行うことのセキュリティ上の意味は何ですか?
ピーターモーテンセン

PC上のプログラムでftpを使用できるようになりました。
マークデベン

ルールを削除してから、FTP経由で接続し、「dir」コマンドのようなものを発行する(WindowsファイアウォールをトリガーしてFTPを許可するかどうかを確認し、Yesと答えた場合はルールを再作成する)ことも役立ちます。
mlvljr

5

Windows FTPコマンドラインクライアントftp.exeは、アクティブFTPモードのみをサポートします。

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

サーバーがディレクトリリスト(lsまたはdirコマンド)のデータ転送接続を確立するためにクライアントに接続できなかったのは、ローカルファイアウォールまたはNATが原因である可能性があります。

または、クライアントは外部IPアドレスを認識せず、代わりにサーバーに内部アドレスを提供します(PORTコマンドで)。サーバーは明らかに使用できません。

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


可能であれば、通常はクライアント側で追加のセットアップを必要としないため、パッシブモードを使用する必要があります。

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

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

たとえば、WinSCPのデフォルトはパッシブモードであり、Windows FTPスクリプトをWinSCPスクリプトに変換するためのガイドが用意されています

(私はWinSCPの著者です)


(XP以降)Windowsのどのバージョンでも動作します。どのようなエラーが発生しますか?より詳細な新しい個別の質問をすることを検討してください。
マーティンPrikryl

あなたは両方を必要とwinscp.comし、winscp.exe同じフォルダにあります。エラーメッセージには、フォルダ内でのwinscp.com検索が明確に示されていると思いwinscp.exeます。winscp.net/eng/docs/executables
Martin Prikryl

Np、コメントを削除してください。
マーティンプリクリル

4

Windows 2008サーバーでこの問題が発生しました。

この記事では、アプリケーション層ゲートウェイサービスを有効にすることをお勧めします。これで問題は解決しませんでした。

問題を修正したのは、C:\ Windows \ system32 \ ftp.exeのWindowsファイアウォールに例外を追加することでした


1
デフォルトでは、Windowsファイアウォールの例外にはftp.exeが含まれますが、これはホーム/職場ネットワーク専用です。パブリックネットワーク上にいないことを確認してください。そうでない場合は、パブリックネットワークのftpも許可してください。
ジャグ14年

1

クライアントトランザクションデータをバッチ処理してSQLサーバーに戻すWindows 7マシン上のサードパーティPOSソフトウェアでも同じ問題が発生していました。

クライアントの場所がISPを変更し、したがって静的IPアドレスを変更するまで、問題なく機能しました。コマンドラインFTPコマンドは最初のログインを超えて機能せず、オンラインまたはこのスレッドで見つかった救済策は機能しませんでした。

キックのために、ファイアウォール、ch​​eapo D-Linkルーター/ファイアウォール、およびviolaでFTPルールを再作成しましたが、再び機能しているようです。


0

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]をクリックします


これは、@ Keljoによる回答が既に言っていることです(実際、あなたは彼/彼女の回答をコピーしました)。
マーティンプリクリル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.