具體配置步驟:
1. 創建一個專門的用戶組和用戶
#創建sftp組 groupadd sftp #創建一個sftp用戶,用戶名為ylh useradd -g sftp -s /bin/false ylh
#修改密碼
passwd ylh
注意,這里將shell設置為/bin/false使其沒有登陸shell的權限
2.指定目錄
#sftp組的用戶的home目錄統一指定到/data/sftp下 mkdir -p /data/sftp/ylh #然后指定ylh的home為/data/sftp/ylh usermod -d /data/sftp/ylh ylh
3.編輯/etc/ssh/sshd_config
#編輯sshd_config vi /etc/ssh/sshd_config #輸入/Subsystem搜索到下列內容,注釋掉原有的 # Subsystem sftp /usr/libexec/openssh/sftp-server #改為internal-sftp Subsystem sftp internal-sftp
為什么使用 internal-sftp 而不用默認的 sftp-server,這是因為:
- 這是一個進程內的 sftp 服務,當用戶 ChrootDirectory 的時候,將不請求任何文件;
- 更好的性能,不用為 sftp 再開一個進程。
4.設定屬於用戶組sftp的用戶都只能訪問他們自己的home文件夾
在sshd_config文件結尾添加:
# 匹配用戶組,如果要匹配多個組,多個組之間用逗號分割 Match Group sftpusers # 指定登陸用戶到自己的用戶目錄 ChrootDirectory /data/sftp/%u # 指定 sftp 命令 ForceCommand internal-sftp # 這兩行,如果不希望該用戶能使用端口轉發的話就加上,否則刪掉 X11Forwarding no AllowTcpForwarding no
5.增加上傳權限
chown ylh:sftp /data/sftp/ylh chmod 755 /data/sftp/ylh
6.重啟sshd服務
service sshd restart
//systemctl restart sshd
7.參考鏈接
https://www.jianshu.com/p/8da79294a46f
https://segmentfault.com/a/1190000008578734