IBMなどのレンタルサーバーをcPanelのコンパネ(WHM)で管理していると、FTPの接続エラーが起きる問題。API経由でcPanel のアカウントを追加すると、一定の確率で「cPanel にはログインできるけど、FTP に接続ができない」という問題が発生するらしい。
参考:cPanel FTP接続のエラー 530 Login authentication failed
FTPソフトで「530 Login authentication failed」とエラーが表示され、ID・パスワードが合っていても接続できない。この問題の対処方法をメモ。
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% くらいの確率で発生している気がする。