Linux搭建sftp服务器
1.创建一个组 groupadd 组名
groupadd sftp
2.组下创建一个用户 useradd -g 组名 -s /bin/false 用户名
useradd -g sftp -s /bin/false sftpuser
3.给上述步骤创建的用户设置密码 passwd 用户名
passwd sftpuser
4.修改配置文件
一定放在最下面 不然会出错
vim /etc/ssh/sshd_config 打开配置文件,找到如下行 ,并注释掉
#Subsystem sftp /usr/libexec/openssh/sftp-server #注释掉该行
添加如下行
Subsystem sftp internal-sftp #使用系统自带的internal-sftp
Match User sftpuser #匹配用户名
ChrootDirectory /datas/www #匹配用户的根目录,限制用户活动范围
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
5.设置目录权限
chown -R root:sftp /datas/www
chmod 750 /datas/www
6.重启sshd服务
service sshd restart
7.关闭SElinux
vim /etc/sysconfig/selinux
#找到如下这行
SELINUX=enforcing
#修改为
SELINUX=disabled
8.登录sshd服务
sftp sftpuser@127.0.0.1
出问题看日志:
sshd -t
现象:CentOS7.3搭建SFTP,按照教程配置 + 重启sshd服务,之后用sftp命令试验登陆,用户名为test 报错信息如下:
[root@BILLING86 local]# sftp test@127.0.0.
SSH warring: Authorized users only. All activity may be monitored and reported
test@127.0.0.1's password:
packet_write_wait: Connection to 127.0.0.1 port 22: Broken pipe
Connection closed.
用户ChrootDirectory配置的主目录权限问题导致,并非网络的原因,需特别注意这两点:
ChrootDirectory所指向的文件夹,属主必须是root,属组是sftp用户所属的用户组。 ChrootDirectory所指向的文件夹到系统根路径上的所有途径文件夹,属主都必须是root,且权限不允许有群组用户写入权限,即权限只能为750或755,如果任意一个是777,则会出现上述问题