WordPress 用 SSH 更新設定教學(Amazon EC2 Ubuntu 伺服器)
WordPress的發展與安全性問題
WordPress 在十幾年前一開始只是個簡易的免費部落格平台,然而因為因為它簡單而又強大,而且有豐富的外掛可以使用,經過多年發展至今被大量普遍的使用 。不過安全性卻是這個平台的一大問題,因為使用的主機很多,而且很多主機普遍並不會配有專業的 MIS 網管人員,所以變成駭客的好機會。筆者也曾經歷 WordPress 網站被駭客入侵,變成僵屍網路的一環,然後差點被 Amazon 強制停機的處境。
為了提昇安全性,WordPress 必需隨時更新至最新版本,而更新的方式傳統是用 FTP 來上傳檔案,不過也可以改用FTPS或 SSH 來傳輸 。不用說,當然要用後者比較安全。(不然也不用刻意發展新協定了,不是嗎?)
在安裝完 WordPress 之後,理所當然的,我們會想要挑一個我們喜歡的佈景主題(Theme)。然而在安裝時,會發現看到下面的畫面而無法繼續:
所以要順利安裝新的佈景主題,我們就要先完成 SSH 的設定:
Step 1. 新增帳號 wp-update
在 Amazon Ubuntu 上 WordPress 裝好後,/var/www/html 下的檔案的 owner 要嘛是 www-data,要不然就是 ubuntu,雖然一路都使用www-data 或 ubuntu 也很方便,但這樣安全性比較差,因為 apache process 的使用者正是 www-data,而 ubuntu 是預設的登入使用者。比較好的辨法是新增另一個帳號,這裡我們用 wp-update 。
sudo adduser wp-update
密碼簡單設一下,其它都直接按 ENTER 即可。
接著修改WordPress安裝目錄的 owner, 目錄預設為 /var/www/html
sudo chown -R wp-update:wp-update /var/www/html
Step 2. 建立 SSH Keys
接著切換身份為 wp-update
sudo su - wp-update
然後建立 SSH key pairs
ssh-keygen -t rsa -b 4096
按 ENTER 同意預設檔案存放為 /home/wp-update/.ssh/id_rsa
然後再按 ENTER 同意不設密語
建立完成之後,確認一下:
cd .ssh ls -al total 16 drwx------ 2 wp-update wp-update 4096 Jan 16 18:08 . drwxr-xr-x 3 wp-update wp-update 4096 Jan 16 18:07 .. -rw------- 1 wp-update wp-update 3243 Jan 16 18:08 id_rsa -rw-r--r-- 1 wp-update wp-update 751 Jan 16 18:08 id_rsa.pub
然後需要另外複製一份 key pairs, 為了下面一步:
cp /home/wp-update/.ssh/id* /home/wp-update/
完成後跳離 wp-update 的身份
exit
接著要使剛才複製的 key pairs 讓 www-data (也就是 apache process)可以讀到這個 key pairs 但是不能修改。作法是將 key pairs 的 group owner 設為 www-data,並將權限設為 640,意思是 owner 可以讀寫,而 group owner 可以讀。
sudo chown wp-update:www-data /home/wp-update/id_rsa* sudo chmod 0640 /home/wp-update/id_rsa*
然後將 public key 列為 authorized keys 之一,不過因為目前只有一個,所以直接複製 public key 即可:
sudo cp /home/wp-update/id_rsa.pub /home/wp-update/.ssh/authorized_keys
同樣的,這個 authorized key 的的權限也要作適當的調整:
sudo chown wp-update:wp-update /home/wp-update/.ssh/authorized_keys sudo chmod 0644 /home/wp-update/.ssh/authorized_keys
由於這個 key 的登入來源是本機,所以安全的作法是加上限制:(這裡筆者習慣用 vim,不熟的話可以用 nano來編輯)
sudo vim /home/wp-update/.ssh/authorized_keys
在一開頭加上 from=”127.0.0.1″
from="127.0.0.1" ssh-rsa ...
Step 3. 調整 WordPress 設定
首先先更新一下函式庫,後面會用到
sudo apt-get update sudo apt-get install php5-dev libssh2-1-dev libssh2-php
接著變更 wp-config.php 內容
sudo vim /var/www/html/wp-config.php
在檔案最後面加上
define('FTP_PUBKEY','/home/wp-update/id_rsa.pub'); define('FTP_PRIKEY','/home/wp-update/id_rsa'); define('FTP_USER','wp-update'); define('FTP_PASS',''); define('FTP_HOST','127.0.0.1:22');
存檔後,重啟 apache2 ,理論上就大功告成了。
sudo service apache2 restart
測試安裝 Theme
點選想要安裝的Theme 之後,可以看到連線資料裡多了一些預設的灰階文字,這時要選擇SSH2
接著點 Proceed,就成功安裝了!
照著做一次覺得奇怪怎麼還是錯誤,
從頭慢慢看到尾發現,下面這行的 authorized_keys 拼錯了!
sudo cp /home/wp-update/id_rsa.pub /home/wp-update/.ssh/authorised_keys
感恩! 🙂
感謝指正! 🙂
這篇很棒,照做後就都ok !!!
後來發現我失敗了(泣),沒看到 SSH2的地方可點選,但其它都可以,唯獨不能更新(泣)