背景交代:
CentOS6.5搭建SFTP,按照教程配置 + 重启SSHD服务,之后用sftp命令试验登陆,用户名为paymentftp 报错信息如下:
[root@BILLING86 local]# sftp paymentftp@127.0.0.1
SSH warring: Authorized users only. All activity may be monitored and reported
paymentftp@127.0.0.1'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小时,收工!