質問: AWSのEC2インスタンスを起動し、CentOS7にてサーバーをたてました。 まず前提として、このCentOS7のサーバーにサイトを構築しました。 さらにユーザーを1人追加して、お客さん専用アカウントにし、一部のディレクトリしか公開してない状態です。sftpなら問題なく接続できます! しかしお客さんからFTP接続で、公開ディレクトリに接続できるようにと言われたので設定しました。(※cmdからは接続可。しかしWinSCPでFTP指定して接続するとできない。) さらにお客さんから、passiveモードにしてくれと言われました。 これらを解決するためにいろいろ調べてもわからなかったので質問させていただきます。 まずはvsftpdをインストールし設定(vsftpd.conf)も完了しました。 ※現在の設定内容は下記にあります。 WinSCPでFTP接続を試みるも下記エラーがでます。 ............................................................................. Server sent passive reply with unroutable address プライベートIP, using host address instead. タイムアウトしました ディレクトリの一覧を取得できません Entering Passive Mode (プライベートIP,239,173). ディレクトリ '/' のリスト取得のエラー ............................................................................... また調べてるとファイヤーウォールの設定がなんだかんだと書いてあるが、現在ファイヤーウォールはnot runninngで、起動してない状態です。 さらに自サーバーにSSHでログインしFTPコマンドでlsを実行すると ”227 Entering Passive Mode (172,31,31,73,172,102).” と表示されるのに対して、 コマンドプロントにてFTPコマンドでlsを実行すると ”200 PORT command successful. Consider using PASV.” と表示されます。 正直ここで息詰まってしまっています。 どなたか詳しいかた教えていただけると嬉しです。 よろしくお願いいたします。 vsftpd.conf ``` anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 allow_ftpd_full_access dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log//var/log/vsftpd.log xferlog_std_format=NO ascii_upload_enable=YES ascii_download_enable=YES ftpd_banner=Welcome to blah FTP service. chroot_local_user=YES chroot_list_enable=YES seccomp_sandbox=NO chroot_list_file=/etc/vsftpd/chroot_list user_config_dir=/etc/vsftpd/username ls_recurse_enable=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES userlist_deny=NO userlist_file=/etc/vsftpd/user_list tcp_wrappers=YES allow_writeable_chroot=YES pasv_promiscuous=YES pasv_min_port=40000 pasv_max_port=50000 ```
回答: おそらく vsftpd が Elastic IP(グローバルIPアドレス)を認識していないからではないでしょうか? 下記URLが、参考になるとおもいます。 【AWS】AWSでFTPサーバー立てる時に気をつけるべき2つのこと+α ec2にてftpでパッシブを使用するときにハマったポイント