首页 技术 正文
技术 2022年11月17日
0 收藏 530 点赞 4,324 浏览 2089 个字

#创建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命令
为什么用 internal-sftp 而不用默认的 sftp-server,这是因为:
这是一个进程内的 sftp 服务,当用户 ChrootDirectory 的时候,将不请求任何文件;
更好的性能,不用为 sftp 再开一个进程。

#保存退出

#设定Chroot目录权限:

chown -R root:root /datas/www
chmod /datas/www

#建立SFTP用户登入后可写入的目录:

mkdir /datas/www/sftpuser
chown -R sftpuser:sftp /datas/www/sftpuser/
chmod /datas/www/sftpuser/

#重启sshd服务:

service sshd restart

#测试是否能正常登陆:

sftp -P  ftpuser@127.0.0.1    

#关闭SElinux:

vi /etc/sysconfig/selinux#找到如下这行
SELINUX=enforcing#修改为
SELINUX=disabled

#保存退出

#这里讨论了为什么要关闭这功能:https://www.zhihu.com/question/20559538

常见问题:

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 yesSubsystem sftp internal-sftp
UsePAM yes
Match user sftpuser1
ForceCommand internal-sftp
ChrootDirectory /data/wwwroot/user1/

参考资料:http://www.cnblogs.com/xjnotxj/p/6912471.html

2、如果你链接服务器的时候出现下面的提示:

> Write failed: Broken pipe
> Couldn't read packet: Connection reset by peer

这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。注意以下两点原则:

  • 目录开始一直往上到系统根目录为止的目录拥有者都只能是 root,用户组可以不是 root。

  • 目录开始一直往上到系统根目录为止都不可以具有群组写入权限

  • 上面2点一定注意,仔细检查。我就是因为这个问题,导致一直有这个问题。仔细检查配置后,解决问题。

参考资料:

https://segmentfault.com/a/1190000008578734

http://www.cnblogs.com/kgdxpr/p/3623369.html

http://blog.csdn.net/xinxin19881112/article/details/46831311

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,484
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,899
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,732
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,485
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,125
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,286