配置openssh實現sftp遠程文件上傳


客服端: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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM