客服端:winscp等ftp/sftp客戶端
服務器:阿里雲默認使用的openssh
需求:可以sftp遠程傳輸文件到服務器固定文件夾下,不可遠程ssh登錄
步驟:
1. 建立系統用戶ftpuser及組ftpgroup
useradd ftpuser
groupadd ftpgroup
2. 設置ftpuser密碼
passwd ftpuser
然后輸入密碼
3. 設置ftpuser遠程不能ssh登錄
usermod -s /bin/false ftpuser
可以cat /etc/passwd查看系統用戶的登錄情況及主目錄
4. 修改ftpuser主目錄
usermod -d /mnt/xxx/
或者3、4步,統一用usermod -M -d /mnt/xxx/ -s /bin/false ftpuser
5. 編輯ssh配置文件,指定用戶及目錄
nano /etc/ssh/sshd_config,注釋默認的Subsystem和UsePAM,並在最末尾添加以下幾行(紅字的)
UseDNS no
AddressFamily inet
PermitRootLogin yes
SyslogFacility AUTHPRIV
PasswordAuthentication yes
#--- 在UseDNS no這一行的下一行添加以下幾行,不然報錯,服務無法重啟
Subsystem sftp internal-sftp
UsePAM yes
Match User ftpuser
ForceCommand internal-sftp
ChrootDirectory /mnt/xxx
AllowUsers root ftpuser #我用系統的sshd控制ssh遠程登錄,故也把ftpuser放入AllowUsers列表。
6. 重啟sshd服務
service sshd restart
7. 測試ftpuser的ssh和sftp登錄情況
ssh無法登錄
sftp可以,默認列出/mnt/xxx文件夾
注意:
•ftpuser的用戶目錄和ssh配置文件里的目錄一致
•ssh目錄權限及所有者必須是755/root(上級目錄所有者為root,組內不能是可寫權限,否則fatal: bad ownership or modes for chroot directory "/mnt/xxx")
•ftpuser得usermod里禁止ssh登錄是/bin/false而不是/sbin/bash/nologin (nologin是禁止了ssh和sftp)
參考:
http://blog.csdn.net/qq_35440678/article/details/52788808
https://www.cnblogs.com/xjnotxj/p/6912471.html
http://blog.csdn.net/kenight/article/details/36669679