FTPクライアントの接続には
- パッシブモード
- アクティブモード
の二種類があり、
このモードの違いにより、TCPレベルで接続が方法が異なります。
詳しくは別途説明するとしまして、
WindowsのFTPクライアント(標準ftp.exe)では、パッシブモードでのFTPサーバーへのアクセスは出来ないのでしょうか?
レジュメ
環境・前提条件
確認した環境は以下になります。
- FTPサーバー(Windows Server 2016 の IIS 10)
- FTPクライアント (Windows 10 のバージョン10 )
結論、Windows標準のftp.exeではパッシブモード(PASV)接続できない
結論から言ってしまうと、
残念ながらWindows標準のftp.exeではパッシブモード(PASV)接続はできません。
変更もできません。
どうしてもFTPクライアントでパッシブモード接続をしなければならないサーバー環境の場合は、
Windowsでは別のFFFTPやWinSCPといったソフトを使用し、パッシブモード接続する必要があります。
パッシブモード(PASV)かアクティブモード(PORT)か見極める方法
そのFTPクライアントの接続が、
- パッシブモード(PASV)接続しようとしているか
- アクティブモード(PORT)での接続をしようとしているのか
見極める方法は、デバックモードでFTPクライアントを実行することでわかります。
ftp –d
上記は、Windowsの場合のデバックモードの起動オプションです。
デバックモードで、ftp接続をし、lsコマンドを実行したあとのデバックが
- PORT クライアントIPアドレス(接続ポート)
の場合は、アクティブモードで、
サーバーへクライアントのIPアドレスを返信し、サーバーからクライアントへの接続を促します(アクティブモード)
一方、
- PASV サーバーIPアドレス(接続ポート)
の場合は、クライアントにサーバーへの接続ポートの教えクライアントからのサーバー接続を促します(パッシブモード)
上記は、FTPコマンド単位で再接続が行われます。
噂のquote pasvコマンドではパッシブモード(PASV)に変更できないの?
残念ながら、できません。
quote pasv
コマンドを発行することにより、サーバーから接続先のポート情報が来ますが、
FTPコマンドを実行すると、そのPASVポートには接続せず、結局PORTコマンドでアクティブモード接続してしまう挙動となります。
LinuxやAS400のFTPクライアントはデフォルトでパッシブモード(PASV)で動作し、アクティブモードへのへの変更ができるのですが、
Windowsのftpクライアントの場合は、残念ながらアクティブモードでしか接続できないんですね。
以上、Windows 標準ftpクライアントの接続動作モードの話でした