本篇文章更新時間:2022/01/03
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
對於管理網站這件事有很多流派!像是使用付費的 cPanel、Plesk 或免費的 Vesta 主機網站全端管理控制面板類型,或是單純使用套裝伺服器端軟體(像是 LNMP、LAMP 等),再來是高階一點的 Cloudways 或 RunCloud 等 SaaS 網站服務..等。
不論哪個流派都好,都是要解決網站站台管理問題。
「網站」不外乎主機、網站主程式與資料庫,基本三個面向的資源管理。但不是每個人都熟悉這三部分,更何況每一個部分都是專業!
本主題專注於解決主機端與網站程式檔案管理的這塊!
正題
以下內容是在 Ubuntu 16.04 環境下實測
OpenSSL 1.0.2g
版本沒問題。
這年頭什麼都要「S」一下,意思是「安全」。所以 SFTP 也是 FTP 的進化。(還在用 FTP 的網站要小心了...)
上述開頭提到的流派,除了自行架設解決的之外都有一套方式來處理檔案傳輸管理的機制,但不外乎都是使用 SFTP(或 FTP )。所以如果要自己來設定 SFTP 要怎麼處理? 使用 SSH 服務設定即可!
如果主機上沒有使用對應的使用者帳號就開過一個
sudo adduser mxp
使用者名稱 mxp ,可以替換成任何想設定的名字,建立好後基礎就是有自己的「家目錄」/home/mxp
,可以使用這目錄來作為下方設定使用。權限設定上是把 /home
設定給 root
管理員,而 /home/mxp
設定給 mxp
。
接著來改 SSH 系統設定: vi /etc/ssh/sshd_config
在設定文件的最後補上下列這段:
Match User mxp
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /home/mxp
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
告訴 SSH ,對應 mxp
這個用戶的登入使用 SFTP
模式,並且接受使用密碼驗證與根目錄為 /home/mxp
,與不開放轉發與通道服務!
如果是使用金鑰驗證的話可以把
PasswordAuthentication
這個改成no
。然後記得把目錄權限調整群組擁有人是root
。chown root:[用戶ID] /home/用戶ID
補上這段後就是重新啟用服務 service ssh restart
,大功告成~
如果不想針對使用者的設定,也可以改為使用 Group 的設定
Match Group group_name
ChrootDirectory /home/%u
參考:如何在 Lightsail 執行個體上建立 SFTP 使用者?
測試
先來測試看看如果使用 ssh 或 scp 功能連線會怎樣?
回傳 This service allows sftp connections only.
僅接受 SFTP 方式連線。
再來測試 SFTP 連線?
Connected to mxp.
sftp> pwd
Remote working directory: /
sftp> ls
public_html
sftp>
連線成功,且僅可以存取指定目錄,看到目錄下有一個 public_html
資料夾。
請教兩個問題:
1、可以轉貼嗎?
2、可以 sftp 卻不行 ssh 的關鍵是 ForceCommand internal-sftp 嗎?
陳賢原
1. 可以轉哦~ 基本上我發在這邊的文都是公開。
2. 沒錯,是那邊關鍵