ubuntu sftp服务器搭建
一、SFTP是什么
SFTP(SSH File Transfer Protocol)是一個比普通FTP更為安全的文件傳輸協議。它工作在SSH 上,確保文件被加密傳輸。默認使用端口是 22.
SFTP 常用客戶端軟件推薦使用 FileZilla,下載鏈接如下:
https://www.filezilla.cn/download/client
FileZilla 客戶端配置步驟:
打開 FileZilla --> 文件 --> 站點管理 --> 新站點 --> 常規 --> 協議選擇 SFTP --> 填寫主機 IP,用戶名,密碼 --> 連接
?
二、需求描述
1. 兩類 SFTP 用戶,給這兩類用戶分為兩個用戶組,分別命名為 sftp_root 和 sftp_read
2. sftp_root 用戶組可以對 SFTP 指定目錄擁有所有權限(讀,增,刪,改)
3. sftp_read 用戶組只有可讀權限,不允許刪除,上傳操作,只允許下載操作
三、在 Ubuntu 服務器上 搭建 SFTP 服務端
在 SFTP 搭建的過程中,遇到了一個客戶端連不上服務端的問題。根本原因是忽略了 SFTP “監獄”根目錄,導致每次都被拒絕鏈接。
“監獄”的根目錄必須滿足如下要求:所有者為root,其他任何用戶都不能擁有寫入權限。
“監獄”根目錄下需要創建 SFTP 共享目錄,該共享目錄才是 SFTP 用戶可以維護的目錄,“監獄”根目錄只能ssh等登錄ubuntu服務器后用root用戶維護。
以下步驟都是在 Ubuntu 服務器的終端中輸入命令。
1.?安裝OpenSSH服務器
sudo apt-get install openssh-server
2. 創建?sftp_root 和 sftp_read 用戶組
sudo addgroup sftp_root
sudo addgroup sftp_read
3. 創建使用 SFTP 的用戶,如果已經有已存在用戶了,也可以跳過改步驟
sudo adduser test_read_user1
sudo adduser test_read_user2
...
sudo adduser test_root_user1
sudo adduser test_root_user2
...
4. 將不同類別用戶添加到對應的用戶組
將?test_read_user1,test_read_user2 添加到?sftp_read 用戶組,并從所有其他用戶組中移除,同時關閉其Shell訪問
sudo usermod -G sftp_read -s /bin/false test_read_user1
sudo usermod -G sftp_read -s /bin/false test_read_user2
sudo usermod -a -G sftp_read test_root_user1
sudo usermod -a -G sftp_read test_root_user2
將?test_root_user1,test_root_user2 添加到?sftp_root?用戶組,但不從其他用戶組用移除(當然,也可以像 test_read_user1 一樣,同時關閉其Shell訪問,但不要從所有其他用戶組中移除)
sudo usermod -a -G sftp_root?test_root_user1
sudo usermod -a -G sftp_root test_root_user2
以下步驟在自己沒有搞清楚原理前,請務必按照下面的步驟嚴格執行,不要有漏掉的,避免將來訪問權限不對,造成困惑。
5. 創建“監獄”根目錄和 SFTP 共享目錄并修改用戶和權限
以要共享?share1 和?share2 兩個目錄為例:
sudo mkdir /data/testSFTP
sudo mkdir /data/testSFTP/share1
sudo mkdir /data/testSFTP/share2
sudo chown root:sftp_read /data/testSFTP
sudo chmod 755 /data/testSFTP
sudo chown root:sftp_root /data/testSFTP/share1
sudo chown root:sftp_root /data/testSFTP/share2
sudo chmod 775 /data/testSFTP/share1
sudo chmod 775 /data/testSFTP/share2
6. 修改?SSH 配置文件
sudo vim /etc/ssh/sshd_config
相關配置解釋如下:
(1)添加 sftp 子系統,SFTP 根目錄會根據下面的 Match 進行匹配,如果沒有匹配到而且還在 AllowGroups 的用戶組,那么 SFTP 根目錄會是用戶根目錄,比如,/home/test_read_user1/
(2)允許 sftp_root sftp_read root 用戶組通過 SFTP 訪問 SFTP 服務器
(3)置 Match 的用戶組 sftp_read,只要在該用戶組的用戶,都要滿足 Match 下的限制條件
(4)禁止TCP Forwarding和X11 Forwarding;
? ? ? ? ?強制該組用戶僅僅使用SFTP;
? ? ? ? ?該用戶組根目錄為 /data/testSFTP
7. 重啟 ssh 服務
sudo service ssh restart
備注:如果您的網絡沒有硬件防火墻,也沒有設置ubuntu軟件防火墻(默認關閉的),那么理論上上講,可以通過 FileZilla 成功訪問該 SFTP 服務器了。
總結
以上是生活随笔為你收集整理的ubuntu sftp服务器搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在线图片编辑器/在线视频剪辑器/在线批量
- 下一篇: 软件测试必须知道的精华总结