1、使用root用戶創建用戶組,組名為sftpgroup;創建sftp用戶,用戶名為sftpuser,並設置密碼
groupadd sftpgroup // 創建sftp組
useradd -g sftpgroup -M -s /sbin/nologin sftpuser //-M 表示創建用戶時不生成對應home目錄,-s /sbin/nologin 表示sftp用戶不能登錄系統
passwd sftpuser // 修改sftp用戶密碼
2、修改配置文件sshd_config
vi /etc/ssh/sshd_config
修改如下:
將下面這行注釋掉
#Subsystem sftp /usr/libexec/openssh/sftp-server
## 在文件末尾添加如下幾行
Port 22022
Subsystem sftp internal-sftp
Match Group sftpgroup
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
-----------------------------------------------------------------------------------------------------------------------------
示例解釋:
Match Group sftp # 這一行是指定以下的子行配置是匹配 sftp 用戶組的。Match user userA,userB 則是匹配用戶。
ChrootDirectory /sftp/%u # 設定屬於用戶組 sftp 的用戶訪問的根文件夾。%h 代表用戶 home 目錄,%u 代表用戶名。
ForceCommand internal-sftp # 該行強制執行內部 sftp,並忽略任何 ~/.ssh/rc 文件中的命令。
AllowTcpForwarding no # 是否允許 TCP 轉發,默認值為 "yes", 禁止 TCP 轉發並不能增強安全性,除非禁止了用戶對 shell 的訪問,因為用戶可以安裝他們自己的轉發器。
X11Forwarding no # 是否允許進行 X11 轉發。默認值是 "no",設為 "yes" 表示允許。如果允許 X11 轉發並且 sshd(8)代理的顯示區被配置為在含有通配符的地址(X11UseLocalhost)上監聽。那么將可能有額外的信息被泄漏。由於使用 X11 轉發的可能帶來的風險,此指令默認值為"no"。需要注意的是,禁止 X11 轉發並不能禁止用戶轉發 X11 通信,因為用戶可以安裝他們自己的轉發器。
3、使用root創建新目錄,並將其設置為sftpuser的home目錄,並指定目錄權限
mkdir -p /sftp/sftpuser //-p 表示parents,即遞歸創建目錄
usermod -d /sftp/sftpuser sftpuser // -d 表示修改用戶home(家)目錄
# 設置Chroot目錄權限
chown root:root /sftp/sftpuser
chmod 755 /sftp/sftpuser
// 設置sftp用戶可以操作的目錄
mkdir /sftp/sftpuser/upload
chown sftpuser:sftpgroup /sftp/sftpuser/upload
chmod 755 /sftp/sftpuser/upload
要實現 Chroot 功能, 目錄權限的設置非常重要 。否則無法登錄,給出的錯誤提示也讓人摸不着頭腦,無從查起。我在這上面浪費了很多時間。
ChrootDirectory:定義了用戶通過認證以后的 chroot 目錄,此目錄及其所有子目錄的屬主必須是 root,且這些目錄只有 root 帳號可以進行寫操作,其他任何組和帳號都不可寫。chroot 以后,sshd 會將用戶的工作目錄轉到 chroot 目錄中用戶自己的主目錄。如果 ChrootDirectory 定義的目錄下沒有相應的 /home/username 目錄,則會直接轉到 chroot 的 / 目錄下。
目錄權限設置上要遵循2點:
ChrootDirectory 設置的目錄權限及其所有的上級文件夾權限,屬主和屬組必須是 root;
ChrootDirectory 設置的目錄權限及其所有的上級文件夾權限,只有屬主能擁有寫權限,權限最大設置只能是 755。
4、重啟sshd
systemctl restart sshd.service
5、驗證:sftp -P22022 sftpuser@ip
參考:
https://www.cnblogs.com/reachos/p/11737382.html
https://blog.csdn.net/zhichao_qzc/article/details/80301994