GCP 主機架設 WordPress 容易遇到的 SFTP 問題
使用其他較簡單主機 VPS 的人,要跳到 GCP 時,常常因為 Google Cloud Platform 更嚴謹的主機安全性,而導致遇到一連串的設定問題。
今天我們要解決的是使用 FileZilla 之類的 SFTP 連線時⋯⋯使用者權限問題,會導致如下異常:
- 無法透過 FileZilla SFTP 刪除檔案
- 無法透過 FileZilla SFTP 更名檔案
- 無法透過 FileZilla SFTP 覆蓋檔案
- WordPress 上無法刪除/安裝外掛
- WordPress 上無法新增/刪除 媒體庫
以上幾點都是權限所導致的問題,解決的方法就是修正「使用者權限」。
GCP SFTP 無法操作原因
檔案的權限所有者為了避免 4~5 點問題,會設為 www 或是 www:data,才不會影響 WordPress 網站正常運作!其他 VPS 我們登入 SFTP 都是使用 root 最高管理者!因此可以編輯修改任何檔案。
但是 GCP 卻不讓我們使用 root 操作 SFTP,我們用的是自己的帳號登入,而自己的帳號既然不是資料夾的擁有者、也不是最高管理者,當然就無法進行新增 / 修改 / 刪除的操作。
GCP 如何設定 SFTP,才能解決權限無法修改檔案問題?
這邊依照難度提供三個方法:
- 將 WordPress 權限修改為 777
- 將 GCP 改為可用密碼登入、再使用 www 登入 SFTP
- 使用 www 登入 SFTP,並且保持密鑰登入,關閉密碼登入
三個方法都可解決此問題,越困難的方法,能夠保留的主機安全性越高。
一、將 WordPress 資料夾的權限設定為:777
這樣即使不是最高管理者都可以編輯了,但這樣無疑是將網站的門戶大開,安全性大大降低!
sudo chmod 777 [你的 WordPress 資料夾路徑]
二、使用 www 登入,GCP 主機需改為可密碼登入
概念是既然必須設 www(有些系統是:www:data)為資料夾擁有者,我們乾脆就用 www 這個使用者來登入 SFTP 吧!這樣他就理所當然可以進行操作!
但是 www 預設是不能登入的、也沒有密碼。因此我們先幫 www 改為可登入並設定密碼!
修改 www 為可登入使用者
vim /etc/passwd
開啟主機密碼登入功能
進入管理登入的 sshd_config 檔修改
vim /etc/ssh/sshd_config
找到 PasswordAuthentication 預設是 no 改成 yes
PasswordAuthentication yes
給 www 設定一個密碼
sudo passwd www
重啟 sshd
sudo service sshd reload
sudo service ssh restart
可密碼登入 SFTP 了!
可以用 www 在 FileZilla 使用密碼登入 SFTP 了。
三、使用 www 登入 SFTP,但是保持密鑰登入!
第三個方法算是第二個方法的進階版,主要是要保持 GCP 主機不開放密碼登入的這層安全性,但就算開放密碼登入也還是可以接受的安全範圍。因此如果覺得步驟三太過複雜,可以用步驟二就好。
創建 www 的密鑰 (此步驟在電腦本機端操作、非 ssh 主機端)
創建密鑰
ssh-keygen -t rsa -f ~/.ssh/google-gcp-record-key-www -C www
權限設定
chmod 400 ~/.ssh/google-gcp-record-key-www
印出 key
cat ~/.ssh/google-gcp-record-key-www.pub
為 www 創建資料夾
這邊請先完成第二個方法的所有操作!接著再接續這裡創建 www 的資料夾
mkdir www
chown -R www:www www
將金鑰新增到主機上(此步驟在本機終端機操作)
ssh-copy-id -i ~/.ssh/gcp-record-www-key.pub www@[主機 ip 位址]
接著終端機會詢問密碼,輸入方法二中所設定的 www 密碼。
關閉方法二中開啟的 GCP 主機密碼登入功能,加強主機安全性
vim /etc/ssh/sshd_config
找到 PasswordAuthentication 改成 no
PasswordAuthentication no
重啟
sudo service sshd reload
恭喜完成所有步驟
你已經成功解決 SFTP 操作問題,並且保持了原本 GCP 的高安全性。
在這裡,你不會被廣告打擾,所有的學習內容都是免費的。
如果這讓你感到滿意,一杯咖啡能讓我們走得更遠。
嗨!歡迎來到造九 😊 打聲招呼吧!