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情報の入力の手間が省けて、セキュリティも向上しました!
上手くいかない?
こんなエラーが出たら・・・
「2.SSHの鍵を作成」をもう一度見直してください。
鍵はWEBサーバーを動かしているユーザー(www-data)がアクセス出来るようにする必要があります。
libssh2-phpをインストールした後、php5-fpm の再起動を忘れてませんか?
残念ながら、私にも解決方法がわかりません。通常のFTP方式に戻せば更新できると思います。