背景交代:
CentOS6.5搭建SFTP,按照教程配置 + 重啓SSHD服務,之後用sftp命令試驗登陸,用戶名爲paymentftp 報錯信息如下:
[root@BILLING86 local]# sftp [email protected]
SSH warring: Authorized users only. All activity may be monitored and reported
[email protected]'s password:
packet_write_wait: Connection to 127.0.0.1 port 22: Broken pipe
Connection closed.
Connection closed
原因:是用戶ChrootDirectory配置的主目錄權限問題導致,並非網絡的原因,需特別注意這兩點:
1. ChrootDirectory所指向的文件夾,屬主必須是root,屬組是sftp用戶所屬的用戶組。
2. ChrootDirectory所指向的文件夾到系統根路徑上的所有途徑文件夾,屬主都必須是root,且權限不允許有羣組用戶寫入權限,即權限只能爲750或755,如果任意一個是777,則會出現上述問題。
故以本人配置爲例:
用戶:paymentftp 用戶組:sftp
ChrootDirectory配置:/usr/local/mysftp
則:mysftp文件夾的所有者/組應爲:root/sftp 權限是755
usr local 三個文件的所有者/組應爲:root/root 權限是755
配置可寫入的文件夾
使用ftp客戶端,以paymentftp用戶登陸,可以看到該用戶的home文件夾是mysftp,且不能查看向上級目錄。
但目前paymentftp用戶只能讀取mysftp下的文件,沒有上傳寫入的權限(當前配置組用戶無寫入權限)。
需要在mysftp下新建一個屬主爲paymentftp的文件夾即可,理論上,按照權限要求,home文件夾下是不允許寫入的,只能是新建下級目錄才能設置寫入權限。
折騰了2小時,收工!