linux搭建sftp

sftp采用的是ssh加密隧道,依赖的是系统自带的ssh服务

1.  创建sftp组

# 新增分组
groupadd sftp  
# 查看分组
cat /etc/group

 

 

2. 创建一个sftp用户mysftp并加入sftp组中,设置密码 

useradd -g sftp -s /bin/false mysftp  
passwd mysftp 

 

 

3. 新建/data/sftp/mysftp目录,并将它指定为mysftp组用户的home目录

mkdir -p /data/sftp/mysftp  
usermod -d /data/sftp/mysftp mysftp

4. 编辑配置文件

注释掉

   #Subsystem      sftp    /usr/libexec/openssh/sftp-server

在文件最后面添加如下几行内容然后保存(必须在 UseDNS no 之后)

 

vi /etc/ssh/sshd_config

# Subsystem      sftp    /usr/libexec/openssh/sftp-server  


Subsystem       sftp    internal-sftp    
Match Group sftp
ChrootDirectory /data/sftp/%u 
ForceCommand    internal-sftp
AllowTcpForwarding no
X11Forwarding no  

5. 设置Chroot目录权限

chown root:sftp /data/sftp/mysftp  
chmod 755 /data/sftp/mysftp

6. 新建一个目录供stp用户mysftp上传文件,这个目录所有者为mysftp所有组为sftp,所有者有写入权限所有组无写入权限

 

mkdir /data/sftp/mysftp/upload  
chown mysftp:sftp /data/sftp/mysftp/upload  
chmod 755 /data/sftp/mysftp/upload  

7. 关闭selinux并重启sshd服务,然后测试

 

# 关闭selinux
setenforce 0
# 重启sshd
systemctl restart sshd.service

8. 在其他服务器上进行验证,sftp 用户名@ip地址

# 默认端口可以省略,输入密码后即可
sftp [-P 22] mysftp@192.168.0.1

 


版权声明:本文为yxl_num原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。