[Linux] SSH 服務設定沒有 Shell 指令權限的 SFTP 檔案傳輸模式

本篇文章更新時間: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 。然後記得把目錄權限調整群組擁有人是 rootchown 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 資料夾。


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

參與討論

2 則留言

  1. 請教兩個問題:
    1、可以轉貼嗎?
    2、可以 sftp 卻不行 ssh 的關鍵是 ForceCommand internal-sftp 嗎?

  2. 陳賢原
    1. 可以轉哦~ 基本上我發在這邊的文都是公開。
    2. 沒錯,是那邊關鍵

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon