Linux环境配置SFTP小结

说明:简明扼要的记录在Linux环境上配置SFTP的注意事项,主要是自己在该问题的小细节上犯过几次同样的错误,我必须要动手把它记录、写下来,自己还要时不时的翻看一下,避免在同样的问题上连续跌倒(*^__^*)

一 配置步骤

1.创建SFTP用户组

groupadd sftp

2.添加用户并设置为sftp

 useradd -g sftp -s /sbin/nologin -M  sftpUser

其中:(/sbin/nologin为禁止登录shell的用户,即该用户sftpUser无法获取shell,也就限制其登录主机)

3.设置用户密码

passwd sftpUser

4.创建用户目录,并设置权限

cd /home

mkdir sftpUserDir

chown root:sftp sftpUserDir

chmod 755 sftpUserDir

这里:设置sftp用户sftpUser将来通过SFTP来上传、下载的目录为/home/sftpUserDir。同时,设置该目录目录/home/sftpUserDir的所属用户和组为root:sftp,且其权限务必为755,否则SFTP会报错!

5.修改SSH配置

修改/etc/ssh/sshd_config配置文件

修改Subsystem为:

Subsystem sftp internal-sftp

6.sshd_config添加用户配置

Match User sftpUser  #配置允许SFTP操作的用户名为sftpUser

Match Group sftp   #配置允许SFTP操作的用户组为sftp

X11Forwarding no

AllowTcpForwarding no

ForceCommand internal-sftp

ChrootDirectory /home/sftpUserDir  #配置用户的根目录

说明:Match User sftpUser和Match Group sftp的配置,可以有选择性的配置,也可以组合配置。中间3行为允许SFTP转发的配置。

7.最后重启SSH

/etc/init.d/ssh restart

二 验证测试

在其它的机器上执行:

sftp sftpUser@SFTP_server_IP

三 小结

1  ChrootDirectory 的所有父目录的权限最高只能是755 ,否则会抛出下述错误!

Read from remote host 172.16.xx.xxx: Connection reset by peer

Couldn’t read packet: Connection reset by peer

2 SFTP Permission denied处理

com.jcraft.jsch.SftpException: Permission denied

问题的原因是,SFTP服务器的SELINUX没关闭。

解决办法:

查看SELINUX的配置:getenforce

关闭SELINUX:setenforce 0

 勿以善小而不为,不要以为不起眼的小问题就不够引起你对它的重视。

评论 (2)

  • qqss84| 2018年1月18日

    很好的文章!
    但这里我也有一个问题,如果最高设置为755 的话,也设置了’chroot jail’,但是用户不能在chroot directory 下创建/上传 文件夹
    ex: drwxr-xr-x /home/user (/home/user 为chroot directory),如果用客户端连接,无法在/home/user 下创建新的文件夹,不知道有没有什么解决办法。

    • admin| 2018年2月1日

      @qqss84 如果/home/user 为chroot directory ,那么/home/user的权限要配置为owner为root,group为你的SFTP用户所属的用户组。

  • 发表评论

    邮箱地址不会被公开。 必填项已用*标注