linux 安装sftp

1、定义sftp的数据目录

mkdir -p /data/sftp

2、将目录归到root用户,否则无法chroot

chown root. -R /data/sftp/或者chown root:root -R /data/sftp/

3、权限设置为755,不能超过755,保证普通用户可以进入

chmod 755 -R /data/sftp/

4、添加sftp服务组,sftp服务可以设置匹配组或单个用户来设置,如果是单个用户可以忽略

groupadd sftp

5、添加用户

useradd -d /data/sftp/clptsftp -m g sftp -s /sbin/nologin clptsftp

验证用户

id clptsftp

添加密码  #添加密码。测试环境从简,生产不建议此密码,可以通过网页 https://suijimimashengcheng.51240.com/ 或mkpasswd命令生成密码(需要安装expect软件包)

echo "123456" | passwd --stdin clptsftp

或者通过passwd clptsftp

sftp组的用户的home目录统一指定到/data/sftp下,按用户名区分,这里先新建一下clptsftp

下面三行的操作可通过添加用户的时候指定-d来指定,如上面第五步,如果第五步使用useradd g sftp -s /sbin/nogin clptsftp命令的话,就要使用下面三行

mkdir -p /data/sftp/clptsftp

使用usermod 命令,更改用户的home目录,且以用户名区分,

usermod -d /data/sftp/clptsftp clptsftp

 

cd /data/sftp

ls

chown root:sftp clptsftp或者这里可以使用root:root,需要验证一下

chmod 755 clptsftp

cd clptsftp

mkdir resourceupload

chown clptsftp:sftp resourceupload/

 

修改sshd服务配置文件,以组的方式管理sftp用户权限

vi /etc/ssh/sshd_config

注释掉:Subsystem      sftp    /usr/libexec/openssh/sftp-server行

linux 安装sftp

 

 ------------------

Subsystem sftp internal-sftp     #使用sftp服务使用系统自带的internal-sftp
Match Group sftp                 #匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割
ChrootDirectory /data/sftp/%u    #用chroot将用户的根目录指定到/data/sftp/%u,%u代表用户名,这样用户就只能在/data/sftp/%u下活动
ForceCommand internal-sftp       #强制执行内部sftp,并忽略任何~/.ssh/rc文件中的命令
AllowTcpForwarding no            #不允许转发TCP协议,默认是yes,如果用户可以shell访问则建议为yes
X11Forwarding no                 #是否允许进行 X11 转发。默认值是"no",设为"yes"表示允许。如果允许X11转发并且sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为"no"。需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。如果启用了 UseLogin ,那么X11转发将被自动禁止。

在文件最后面添加如下几行内容,然后保存。
Subsystem       sftp    internal-sftp  
Match Group sftp  
匹配sftp组的用户,如果有多个组用逗号分割 也可以使用“Match User mysftp”匹配用户,多个用户之间也是用逗号分割
ChrootDirectory /data/sftp/%u  
用chroot将用户的根目录指定到/data/ftp/%u,%u代表用户名,%h表示用户根目录
ForceCommand    internal-sftp  
指定sftp命令
AllowTcpForwarding no
 
X11Forwarding no
禁止用户使用端口转发 建立用户和组放

------------------

5、设定Chroot目录权限
chown root:sftp /data/sftp/clptsftp
chmod 755 /data/sftp/clptsftp


6、建立SFTP用户登入后可写入的目录
照上面设置后,在重启sshd服务后,用户mysftp已经可以登录。但使用chroot指定根目录后,根应该是无法写入的,所以要新建一个目录供mysftp上传文件。这个目录所有者为mysftp,所有组为sftp,所有者有写入权限,而所有组无写入权限。命令如下:

mkdir /data/sftp/clptsftp/resourcesupload
chown clptsftp:sftp /data/sftp/clptsftp/resourcesupload
chmod 755 /data/sftp/clptsftp/resourcesupload

7、修改/etc/selinux/config
文本编辑器打开/etc/selinux/config

vi /etc/selinux/config
将文件中的SELINUX=enforcing 修改为 SELINUX=disabled ,然后保存。

在输入命令

setenforce 0

8、重启sshd服务
输入命令重启服务。

service sshd restart

9、验证sftp环境
用mysftp用户名登录,yes确定,回车输入密码。
sftp mysftp@127.0.0.1
显示 sftp> 则sftp搭建成功。

10、使用FileZilla FTP Client连接SFTP服务器

输入主机IP地址、用户名、密码、端口连接SFTP服务器,端口默认为22。

 

上一篇:ssh与sftp登录对端缓慢问题


下一篇:如何使用winscp连接到交换机的文件系统