linux 搭建SFTP服务器

参考:http://www.koukousky.com/server/linux/217.html

http://blog.csdn.net/zwl19920815/article/details/54893721

 

https://blog.zengrong.net/post/1616.html

 

在百度上看到一个回答:sftp 走的是ssh 协议 开启了sshd就相当于开启了sftp

个人使用的是阿里云的centos默认开启了ssh

一开始以为:创建一个用户组,再添加几个帐号,设置下权限就好了

然而,to young to simple 

 

步骤:

1.创建一个名为 sftp 的组

groupadd sftp  

 

2.创建用户 sftp_admin

写法1:

 

 
  1. useradd -g sftp -s /sbin/nologin -M sftp_admin

  2. -g 加入到sftp组

  3. -s 禁止登录

  4. -M 不要自动建立用户的登入目录

写法2:

 

 

 
  1. useradd -g sftp -s /bin/false -M sftp_admin

  2. -g 加入到sftp组

  3. -s 禁止登录(写法不同,有啥差别,暂时不清楚)

  4. -M 不要自动建立用户的登入目录

 

 

3.设置密码

passwd  sftp_admin

重复输入两次密码

 

4.创建sftp存放文件的目录

mkdir /home/sftp/admin

 

5.修改文件夹 拥有者

chown -R sftp_admin:sftp /home/sftp/admin/

 

-R  如果/home/sftp/admin/路径下还有子文件,则全部修改掉

 

 

 

6.设置,用户登录后的 默认根目录

 

usermod -d /tmp test (test为你的用户名) 这种改法是无效的 
只能通过 修改配置文件

vi /etc/ssh/sshd_config  
注释掉这一行:Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp #限制root的ssh登录
Match User sftp_admin #限制的用户
ChrootDirectory /home/sftp #用户的根目录
目录权限设置上要遵循2点:(需要格外注意)
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最大设置只能是755。
讲真,这一块坑了蛮久的

 

7.重启配置

service sshd restart

(每次修改配置文件后,如果是使用的FileZilla客户端来连接sftp,那FileZilla客户端也需要重启)

 

 

==================使用过程中,遇到的一些报错======================

 

修改了组写入权限报错
bad ownership or modes for chroot directory "/home/sftp"
参考:http://blog.sina.com.cn/s/blog_4fd50c3901018a0l.html


使用ssh2访问出现提示This service allows sftp connections only.
这是因为在server端设置的/etc/sshd_config文件中,需要设置为: AllowTcpForwarding 应该设置为yes才可。 如果没有设置为yes的话,用户就只能通过sftp访问指定目录,而且不能进行ssh登录. 只有把 AllowTcpForwarding no 改为 AllowTcpForwarding yes ,用户才能通过ssh登录然后访问目录


FileZilla连接报错:
错误: Server unexpectedly closed network connection
错误: 无法连接到服务器
这个是,因为配置文件  /etc/sshd_config中
  当前登录的帐号  
ChrootDirectory  对应的文件夹  不是root用户 和root用户组
但是有遇到了个大问题,root账户,不能进行ssh登录了


https://askubuntu.com/questions/553446/ssh-on-but-unable-to-connect-says-only-sftp
测试了下,只要把配置文件里面的这一行注释掉,重启 ssh服务后 就好了
ForceCommand internal-sftp


遇到一个问题:创建的组,成员之间不能互相修改文件,每次都要手动改权限,太麻烦了,
用户创建文件夹的默认权限:通过umask值来设定

UMASK介绍: http://blog.51cto.com/yttitan/1568662

SFTP chroot后如何设置umask: http://blog.51cto.com/yexiang/1609204

修改配置文件   /etc/pam.d/sshd

添加  session     optional pam_umask.so umask=0002

重启sshd服务

 

转:

https://blog.csdn.net/zx1323/article/details/78951304

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值