EC2 Ubuntuでvsftpdがうまく接続できない

Ubuntuでのvsftpdの設定は何度もやっているので、特に何の緊張感もなく設定しているのですが、今回はかなりハマりました。なかなか起動しないし、最終的には原因がハッキリわからなかったわけですが、一応備忘録として記録しておきます。
EC2ではUbuntuの12.04を使っています。EC2はセキュリティー対策としてiptableなどの任意の設定をユーザーにまかせておくわけにはいかないとして、セキュリティーグループという独自の設定をしています。なので、このセキュリティーグループでもってポートを開放しないとすべてのサービスが使えないことになっています。ですからvsftpdでも21とpasvモードの60001-60100を開放しないとダメです。まず最初にここらで躓くのでご注意。
次にひっかかるところは、pasvモード設定でEC2のグローバルIPを設定しておくこと。幸い固定IPを使っていたのでそれを指定するだけで終わりなのですが、EC2のインスタンス起動時に設定されるホスト名(ドメイン)を使っている際にはまた設定方法が少しばかり違うようなのでご注意。
基本的にはそんなところに気をつければよいようです。

そんなこんなで、現象としては以下のようなものがありました。
まず最初にvsftpdをインストールして設定後に起動させると、起動しないんですね。
init: vsftpd main process (12995) terminated with status 1
init: vsftpd respawning too fast, stopped

どうやら起動はするんだけど何らかの原因でterminate(停止)してしまうんですね。これは困ったなと。21ポートもListnされていないとおもわれるがnetstatで確認すると案の定21がいない。
# netstat -lnptg
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2825/sshd
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 7592/master
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 27837/mysqld
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 12950/apache2
tcp6 0 0 :::22 :::* LISTEN 2825/sshd
tcp6 0 0 :::25 :::* LISTEN 7592/master

ftpコマンドで接続するも、
# ftp localhost
ftp: connect: Connection refused

接続拒否される。正常に起動していないようなので当然。

そういうわけでもう一度再インストールするわけですが、vsftpd.confが新しくならない。なので、バックアップしていたデフォルトのvsftpd.confを使って再起動すると何とか起動。
どうやらvsfpd.confでミス設定があったと思われる。ちょっとそれがどこだかわからない。幸いデフォルトで起動したのでそれをよしとしつつ再設定。これは慎重に。最終的にこういう設定になった。(無駄なところ多いんですが)
#設定部分
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=NO
use_localtime=YES
xferlog_enable=NO
connect_from_port_20=NO
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=NO
idle_session_timeout=600
data_connection_timeout=120
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem

#追記部分
pasv_enable=YES
pasv_addr_resolve=YES
pasv_address=[EC2のグローバルIP]
pasv_min_port=60001
pasv_max_port=60100
use_localtime=YES
force_dot_files=YES

/etc/vsftpd.chroot_listがないと叱られるので空のファイルを作成しておく。
# touch /etc/vsftpd.chroot_list
この状態で、service vsftpd restart
すると動いた!しかしどこでしくじっていたのかさっぱりわからない。

pasvモードで接続すると成功。アップロード・ダウンロード、パーミッションの書き換えなど問題なく作動している模様。

後日談: AWSでサーバーをつくるとFTPの接続が何でだか変になることがあると思っていたのだけど、原因はそんなところではなくvsftpd.confの最後の方に記述したpasv_address=[EC2のグローバルIP]が原因であることが多いかもです。私は貧乏症なのでElastic IP アドレスを加えないでデフォルトのIPを使っていて、ちょっと再起動しないといけない機会になってIPアドレスが変更したのが原因でした。
しかしpasv_addressが変更してもMacのTransmitなどでは接続ができてしまうという不思議。WinSCPは全滅でした。