富士山 富士宮口頂上


Date/Time: 2016:10:15 14:40:46
Camera: PENTAX
Model: PENTAX K-5 II s
Exporsure Time: 1/1600
FNumber: 8.0
Aperture Value: 6.0
Focal Length: 21.0

Close

y2blog » WordPressのアップデートをSSHで行う

2

21

2016

WordPressのアップデートをSSHで行う

WordPressのアップデート機能をちょっとだけセキュアにしてみる


Wordpress Update Dialog
WordPressのアップデート管理画面

WordPressのアップデート機能は便利なのだが、どのような環境でもこの機能が使える訳ではない.レンタルサーバを借りてWordpressを動かしている人達の大部分は、何もしなくてもWordpressの管理画面を通じて簡単にアップデートできているのではないかと思う.さくらインターネットなどのレンタルサーバでは、個々のユーザアカウントの下でApacheなどのHTTPサーバが動いているので、Wordpressコンテンツが置かれている各種ディレクトリ配下をHTTP(PHP)側から書き換えることが可能だ.


自分でOSをインストールしてHTTPサーバを立ち上げた場合には、一般のユーザ権限でWordpress配下の各種ディレクトリやファイルを置くことが多いだろう.HTTPのプロセスは”apache” などのアカウントで起動されているので、そのままではHTTP(PHP)側からこれらのWordpress配下の各種ディレクトリやファイルを書き換えることはできない.


このような状況で、Wordpressの管理画面を通じてアップデートを行うと、次の様なFTPによるアップデート設定画面が現れる.Wordpress配下の各種ディレクトリやファイルをFTPを通じて更新するように設定を促されるという訳だ.当然ながら、このFTPによる更新を行うには、Wordpressを動かしている同じサーバ上でFTPサーバが動いており、Wordpress配下の各種ディレクトリやファイルのオーナーアカウントで、wordpress.orgのFTPサーバから各種ファイルをダウンロートできなければならない.


FTP Request Dialog
FTPによるアップデートが要求される


セキュリティー的な面から、このFTPによるファイル転送機能をWordpressを動かしているサーバ上で動かすのは大問題だ.一応FTPSという暗号化されたFTPセッションも使えるようだが、FTPはやはり使いたくない.FTPSの設定をWordpressのサイトで調べていたら、SSHによるアップグレードに関する記述があったので、SSH接続によるWordpressのアップデートを行ってみた.


  Editing wp-config.php – Enabling SSH Upgrade Access

このドキュメントの説明によると、SSH2によるアップグレードを行う方法は2つ有り、一つは “SSH SFTP Updater Support” というプラグインを使う方法で、もう一つが PHPにSSH2アクセス機能を追加する “pecl SSH2 extension” を導入するという方法だ.勿論簡単なのは前者のプラグインを使う方法なのだが、今回はとりあえず後者の”pecl SSH2 extension” を導入して試してみた.



1. “php-pear” を yum を使ってインストールする

#yum -y install php-pear


2. pecl SSH2 extensionをインストールする

#pecl install ssh2


3. SSH2 extensionを強制させる(下記の設定を “wp-config.php” 内に記述する)

define( ‘FS_METHOD’, ‘ssh2’ );


 
...
 
/**
 * For developers: WordPress debugging mode.
 *
 * Change this to true to enable the display of notices during development.
 * It is strongly recommended that plugin and theme developers use WP_DEBUG
 * in their development environments.
 */

define('WP_DEBUG', false);

define(‘FS_METHOD’, 'ssh2');

/* That's all, stop editing! Happy blogging. */

/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
	define('ABSPATH', dirname(__FILE__) . '/');



このドキュメントには、”pecl SSH2 extension”の導入方法については上記の簡単な記述しかされていないが、ユーザの環境によってはそう簡単にはインストールできないかもしれない.


SSH Update Dialog
PHPに”pecl SSH2 extension”を組み込むと、SSHによるアップデート機能が追加される


この方法であれば、SSHによるコネクションが張れれば良いので、FTPを使わなくて済む.一般的にはSSHのポート番号としては22番を使う事が多いが、別な番号を使いセキュリティー強化を謀るのが良いだろう.