nginx ユーザとして ssh 接続できるようにするには?

WordPress のファイルが置かれたディレクトリ /var/www/vhosts は Web サーバの実行ユーザ nginx が所有者となっており、sftp クライアント等で直接ファイルをアップロードする事はできません。
そこで nginx ユーザとして ssh 接続ができるようにする方法について解説します。

nginx ユーザはログインシェルが指定されていないため通常はログインができません、そのためまずはログインシェルを設定する必要が有ります。
ec2-userでインスタンス(サーバー)にログイン後、以下のコマンドで nginx ユーザのログインシェルを bash に設定する事ができます。

$ sudo /usr/sbin/usermod -s /bin/bash nginx

次に root ユーザと同様に passwd コマンドで nginx ユーザのパスワードを変更します。

$ sudo passwd nginx

次に nginx ユーザのホームディレクトリを /var/www/vhosts に変更します。
nginx ユーザとして起動しているプロセスが存在するとホームディレクトリの変更はできないため、nginx、php-fpm のプロセスをいったん終了してから usermod でホームディレクトリを変更します。
ホームディレクトリ変更後に再度 nginx, php-fpm を起動するには以下のコマンドを実行してください。

AmimotoAMI HVM版、RHEL版を利用している場合

$ sudo /sbin/service monit stop
$ sudo /sbin/service nginx stop
$ sudo /sbin/service php-fpm stop
$ sudo /usr/sbin/usermod -d /var/www/vhosts nginx
$ sudo /sbin/service php-fpm start
$ sudo /sbin/service nginx start
$ sudo /sbin/service monit start

AmimotoAMI HHVM 版を利用している場合

$ sudo /sbin/service monit stop
$ sudo /sbin/service nginx stop
$ sudo /sbin/service hhvm stop
$ sudo /usr/sbin/usermod -d /var/www/vhosts nginx
$ sudo /sbin/service hhvm start
$ sudo /sbin/service nginx start
$ sudo /sbin/service monit start

その後、ec2-user と同じ pem キーで接続できるようにするために .ssh/authorized_keys をコピーします。

$ sudo mkdir /var/www/vhosts/.ssh
$ sudo cp /home/ec2-user/.ssh/authorized_keys /var/www/vhosts/.ssh/
$ sudo chown -R nginx:nginx /var/www/vhosts/.ssh/

これで nginx ユーザとして ssh 接続できるようになっているはずです。