WordPressのプラグインなどのインストール・更新をSSHでやる方法

WordPressの為にFTPサーバーを導入している人も多いと思います。普段はSSH(WinSCP)でファイルのやり取りしているのに、プラグインなどの更新の為にFTPサーバーを導入していた・・・なんて良くあります。FTPはセキュリティ的にも使いたくないんだけどね~。と、内心思いつつも・・・。

そんなあなたも、今日でFTPとはおさらばです!

今回の方法は、FTPのパスワード情報を入力しなくても、SSH鍵(秘密鍵・公開鍵)を使ってプラグインなどをインストール・更新をするので、「いますぐインストール」を押すだけで、すぐにインストールされ作業がすごく楽になります!

鍵は非公開領域のサーバー内に置くので、手元のパソコンに持っておく必要が無く、無くしてしまう心配もありません。

SSH2ライブラリをインストール

PHPでSSH2を使えるようにするた為、libssh2-phpをインストールします。

// インストール
# apt-get install libssh2-php

// php5-fpmにSSH2の設定を反映
# /etc/init.d/php5-fpm reload

SSHの鍵を作成

今回は、新しくディレクトリ「.wpssh」を作ります。通常のままだと、「.ssh」に鍵が保存されますが、通常のSSH鍵とWordPress鍵が混在しないように分けます。
※ 秘密鍵:id_rsa、公開鍵:id_rsa.pub

// WordPressを管理しているユーザーに変更
# su hoge

// 鍵を保存するディレクトリ作成(※必ず非公開領域か確認を)
$ mkdir ~/.wpssh/

// 鍵作成(※パスワードはなし!)
$ ssh-keygen -t rsa -f ~/.wpssh/id_rsa

// ~/.ssh/が無ければ作成(自動作成されてる場合あり。)
$ mkdir ~/.ssh/

// 公開鍵を登録する
$ cat ~/.wpssh/id_rsa.pub >> ~/.ssh/authorized_keys

// rootに戻る
$ exit

// パーミッション変更
# chmod -R go-rwx /home/hoge/.wpssh/

// 所有者変更(hoge → www-data)
# chown -R www-data:www-data /home/hoge/.wpssh/

wp-config.phpに追記

WordPressの設定ファイルに追記します。
FTP_HOSTは、localhostのままでOKです。

// SSH 設定
define('FS_METHOD', 'ssh2');
define('FTP_PUBKEY', '/home/hoge/.wpssh/id_rsa.pub');
define('FTP_PRIKEY', '/home/hoge/.wpssh/id_rsa');
define('FTP_USER', 'hoge');
define('FTP_HOST', 'localhost');

これでFTPの入力画面とはおさらばです!

これで何も入力せずにプラグインの「いますぐインストール」をクリックすると、「プラグインを有効化」の画面に直行です!FPT情報の入力の手間が省けて、セキュリティも向上しました!

上手くいかない?

こんなエラーが出たら・・・
wordpress-ssh_1

「2.SSHの鍵を作成」をもう一度見直してください。
鍵はWEBサーバーを動かしているユーザー(www-data)がアクセス出来るようにする必要があります。

wordpress-ssh_2
libssh2-phpをインストールした後、php5-fpm の再起動を忘れてませんか?

wordpress-ssh_3
残念ながら、私にも解決方法がわかりません。通常のFTP方式に戻せば更新できると思います。

読んで頂いて有り難うございます!