cPanel FTP接続のエラー 530 Login authentication failed

cPanel キャッチ画像
cPanel WHM を運用していると、一番やっかいなのが FTP の接続エラーの問題。API 経由でcPanel のアカウントを追加すると、一定の確率で「cPanel にはログインできるけど、FTP に接続ができない」という問題が発生する。

Filezilla だと「530 Login authentication failed」などとエラーが表示されて、FTP ユーザ名・パスワードが合っていても接続できない。この問題の対処方法について。

FTP パスワードの同期

cPanel WHM にログインして root 権限で

/scripts/ftpupdate

を実行する。

cPanel WHM で設定しているアカウント数が多いとコマンドが終了するまで、2~3分かかる。

/scripts/ftpupdate でFTP のエラーが改善される確率は半々くらい。
アカウントの移行・マイグレートした時などは、このコマンドが必須。

ftpupdate は特に害はないので、FTP のエラーがでたらとりあえず実行。

Apache の設定ファイルのリビルド

cPanel WHM のWeb サーバの設定ファイルは

/usr/local/apache/conf/httpd.conf

にあるので、FTP 接続できないアカウントのユーザ名で該当のディレクティブを確認してみる。

バーチャルドメインの設定が上手くいってない場合には、

/scripts/rebuildhttpdconf

コマンドを実行してみる。

rebuildhttpdconf コマンドでも設定が直らないようであれば、
該当ユーザの以下のディレクトリを削除して再度rebuildhttpdconf を実行する。

/var/cpanel/userdata/
/var/cpanel/users/

FTP サーバの再起動・設定確認

とりあえず、稼働しているProFTPD、Pure-FTPなどのFTP サーバを再起動してみる。

その後、パッシブモードとFirewallの動作を確認。

PureFTP の場合だと、/etc/pure-ftpd.conf に

PassivePortRange 49152 65534

を設定して、以下のコマンドを実行するとPassive が有効になる。

/usr/local/cpanel/scripts/restartsrv_ftpserver
rm -f /var/cpanel/conf/pureftpd/main.cache
echo "PassivePortRange: 49152 65534" >> /var/cpanel/conf/pureftpd/main

あとは、iptables の設定が必要なので、以下を実行する

iptables -I INPUT -p tcp --dport 49152:65534 -j ACCEPT
service iptables save

アカウントの再作成

cPanel のサポートに相談したり、色々と試したけど、現状だと上記の方法で直らなかったら、アカウントを再作成するしかない。
利用するIP アドレスとアカウント名が同じだと、問題が解消されないので、IPとアカウント名を変更して該当のドメインを設定すると正常にFTP でアクセスできる。

ちなみにパスワードを変更する場合には、chpass コマンド
/scripts/chpass

まとめ

この問題は、cPanel WHM がアップデートされたタイミングでも起きたりするので何かと厄介。
cPanel のサポートとやり取りをしたこともあるけど、ある程度の確率で発生するのは仕方がないという感じ。

大量にアカウントを追加すると 0.5% くらいの確率で発生している気がする。