2021-04-08 Linux搭建sftp服务及使用

2022-05-22  本文已影响0人  什锦小沐

一、简介

参考:https://blog.csdn.net/cuker919/article/details/6403925

说到sftp就要说ftp,简单来说:

1. ftp要安装,sftp不要安装;

2. sftp更安全,但更安全带来副作用就是的效率比ftp要低些,但据说差别不大

3. ftp功能更强大,有支持的可操作的客户端

二、搭建

参考:https://www.cnblogs.com/reachos/p/11157329.html

2.1 创建sftp用户组

需要root权限,一般可使用 sudu su - ,或命令前面加sudo执行

groupadd sftp

可以使用 cat /etc/group 查看用户组信息

2.2 向sftp用户组中增加sftp_test用户,并修改密码

useradd -g sftp -s /bin/false sftp_test

passwd sftp_test

参数 -s /bin/false :最严格的禁止login选项,一切服务都不可用

对应的是 -s /sbin/nologin 只是不允许系统login,可以使用其他ftp等服务

2.3 新建sftp_test用户的home目录,并进行指定

mkdir -p /app/sftp/sftp_test

usermod -d /app/sftp/sftp_test

2.4 修改ssh配置

vim /etc/ssh/sshd_config

将如下这行用#符号注释掉

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

并在文件最后面添加如下几行内容然后保存

Subsystem      sftp    internal-sftp

Match          Group  sftp

ChrootDirectory /app/sftp/%u

ForceCommand    internal-sftp

AllowTcpForwarding      no

X11Forwarding  no

最后结果如图所示:

sshd_config配置

2.5 设置Chroot目录权限

chown root:sftp /app/sftp/sftp_test

chmod 755 /app/sftp/sftp_test

注意:这里设置Chroot目录权限和上面配置中的ChrootDirectory应是同级目录,%u即表示用户

2.6 新建一个目录供sftp_test用户上传下载文件

这个目录所有者为sftp_test所有组为sftp,所有者有写入权限所有组无写入权限

cd /app/sftp/sftp_test

mkdir upload download

chown sftp_test:sftp /app/sftp/sftp_test/upload

chown sftp_test:sftp /app/sftp/sftp_test/download

chmod 755 /app/sftp/sftp_test/upload

chmod 755 /app/sftp/sftp_test/download

注意:若/app目录不是root的话,还要执行 chown root /app ,将/app所有者设置为root

这样的权限,不允许sftp_test在/app/sftp/sftp_test/目录下创建新目录、上传文件,但可以在/app/sftp/sftp_test/upload创建新目录、上传文件

最终目录结构如图所示:

sftp目录结构

2.7 关闭selinux并重启sshd服务

setenforce 0

systemctl restart sshd.service

也可以使用 systemctl status sshd.service ,查看sshd服务运行状态

三、使用sftp服务

参考:https://www.linuxprobe.com/linux-sftp-files.html

3.1 连接

连接命令:sftp 用户名@ip地址

sftp sftp_test@127.0.0.1

若需要指定端口

sftp -oPort=22 sftp_test@127.0.0.1

3.2 查看目录及基础命令

进入sftp目录:cd upload/

查看sftp目录文件:ls 、ls upload/

查看当前所在的sftp目录:pwd

查看本地目录文件:llslls upload/

查看当前所在的本地目录:lpwd

可以看出查看本地是比查看sftp多了“l”

3.3 上传

上传test.txt文件到sftp的当前目录:put test.txt

上传本地sftp_test目录的全部文件到sftp的当前目录:put -r sftp_test/

3.4 下载

下载sftp当前目录的test.txt文件到本地的当前目录:get test.txt

下载sftp的sftp_test目录的全部文件到本地的当前目录:get -r sftp_test/

3.5 退出

退出sftp:exit

上一篇下一篇

猜你喜欢

热点阅读