Linux(CentOS)上配备SFTP
原创创建sftp组:
groupadd sftp
创建用户sftpuser:
useradd -g sftp -s /bin/false sftpuser
提示:
/etc/group 该文件包含所有组。 /etc/shadow /etc/passwd 系统中存在的所有用户名
设置sftpuser用户的密码将要求您输入两个密码确认:
passwd sftpuser
创建一个sftp上传目录:
mkdir /datas/www
修改用户sftpuser目录:
usermod -d /datas/www sftpuser
配置sshd_config:
vi /etc/ssh/sshd_config
找到下面这一行并将其注释掉
Subsystem sftp /usr/libexec/openssh/sftp-server
添加以下行(如果添加后有问题,则添加到末尾)
Subsystem sftp internal-sftp #此行指定使用sftp该服务使用系统自己的internal-sftp Match User sftpuser #此行用于匹配用户。 ChrootDirectory /datas/www #用chroot指定用户的根目录。/datas/www ,因此用户只能在。/datas/www下活动 AllowTcpForwarding no ForceCommand internal-sftp #指定sftp命令
或者
Subsystem sftp internal-sftp
Match Group sftpgroup
ChrootDirectory /uploads
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
为什么用 internal-sftp 不使用默认设置 sftp-server,这是因为: 这是在一个过程中进行的。 sftp 服务,当用户 ChrootDirectory 不会要求提供任何文件; 更好的表现,不是。 sftp 让我们开始另一个过程。
保存退出
设定Chroot目录权限:
chown -R root:root /datas/www chmod 755 /datas/www
建立SFTP用户登录后可以写入的目录:
mkdir /datas/www/sftpuser chown -R sftpuser:sftp /datas/www/sftpuser/ chmod 755 /datas/www/sftpuser/
重启sshd服务:
service sshd restart
测试您是否可以正常登录:
sftp -P 22122 ftpuser@127.0.0.1
关闭SElinux:
vi /etc/sysconfig/selinux
找到下面这行
SELINUX=enforcing
修改为
SELINUX=disabled
常见问题解答:
1、修改sshd_config文件后重新启动 sshd,报错:Directive UseDNS is not allowed within a Match block
语法错误,原因不明,只需要对两个配置的位置进行间调,然后不报告错误。
修改前:
Subsystem sftp internal-sftp UsePAM yes Match user sftpuser1 ForceCommand internal-sftp ChrootDirectory /data/wwwroot/user1/
UseDNS no AddressFamily inet PermitRootLogin yes SyslogFacility AUTHPRIV PasswordAuthentication yes
修改后(即按另一顺序):
UseDNS no AddressFamily inet PermitRootLogin yes SyslogFacility AUTHPRIV PasswordAuthentication yes
Subsystem sftp internal-sftp UsePAM yes Match user sftpuser1 ForceCommand internal-sftp ChrootDirectory /data/wwwroot/user1/
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除