1、SFTP描述

SSH文件传输协议(英语:SSH File Transfer Protocol,也称Secret File Transfer Protocol,中文:安全文件传送协议,英文:Secure FTP或字母缩写:SFTP)是一种数据流连接,提供文件访问、传输和管理功能的网络传输协议

SFTP可以为传输文件提供一种安全的加密方法,SFTP为SSH的一部分,采用的是SSH加密隧道,由于这种传输方式使用了加密/解密技术,安装性方面比FTP要强一些,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP

SFTP与FTP有着几乎一样的语法和功能,SFTP本身没有单独的守护进程,它必须使用sshd守护进程( 端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序

SFTP依赖的是系统自带的SSH服务,不像FTP还需要额外的进行安装(vsftp服务), SFTP是只要确保你的Linux 账号能连接,SFTP默认连接账号就是Linux root账号和密码

2、配置讲解

在CentOS7中,sftp只是ssh的一部分,一般最小化安装也会安装sshd相关的服务及配置。所以ssh相关安装在此不做描述,有意者可留言。

2.1 详细配置讲解

  1. 查看是否安装了ssh服务:

    ssh -V
  2. 新建用户和SFTP目录:

    # 创建文件目录
    mkdir -p /home/LdRun/data/sftp/sftpuser
    chown root:root /home/LdRun/data/sftp/sftpuser
    chmod 755 /home/LdRun/data/sftp/sftpuser# 新建用户组sftp
    groupadd sftp
    # 新建用户sftpuser,并且设置不支持ssh系统登录,只能登录sftp服务器
    # -g 用户组; -d 指定家目录; -s 不能登陆系统; -M 不创建家目录
    useradd -g sftp -d /home/LdRun/data/sftp/sftpuser -M -s /sbin/nologin sftpuser
    # 设置密码
    # echo "新密码" | passwd --stdin 用户名
    echo "LandPower" | passwd --stdin sftpuser# 由于/data/sftp/sftpuser的用户是root,其它用户都没有写的权限
    # 所以要在该目录下新建一个目录用于文件的上传下载
    mkdir -p /home/LdRun/data/sftp/sftpuser/upload
    chown sftpuser:sftp /home/LdRun/data/sftp/sftpuser/upload
    chmod 755 /home/LdRun/data/sftp/sftpuser/upload
    

    sftpuser是你为该sftp服务创建的用户名,/home/LdRun/data/sftp/sftpuser为sftp服务器访问路径。

  3. 配置SSH和SFTP服务器:

    # 防止后期配置文件出错后无法还原
    [root@centos7 ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup[root@centos7 ~]# vi /etc/ssh/sshd_config
    # 修改下面的内容,没有的内容直接新增即可
    # 下面这几项的默认值也是它们,所以这一步可以跳过
    PermitRootLogin yes
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile  .ssh/authorized_keys# 注释掉这行
    # Subsystem      sftp    /usr/libexec/openssh/sftp-server
    # 文件末尾添加以下内容
    Subsystem sftp internal-sftp
    Match Group sftp
    ChrootDirectory /home/LdRun/data/sftp/%u
    ForceCommand internal-sftp
    # 下面两项是与安全有关
    AllowTcpForwarding no
    X11Forwarding no
  4. 防火墙相关配置:
    firewall-cmd --list-all                                # 查看已开放的端口
    firewall-cmd --permanent --zone=public --add-port=22/tcp    # 开通sftp服务22默认端口
    firewall-cmd --reload                                       # 刷新防火墙,重新载入
    
  5. 重启sshd服务:
    systemctl restart sshd.service
  6. 测试:

    [root@centos7 upload]# sftp sftpuser:LandPower@192.168.8.203
    sftpuser:sftppassword@192.168.8.203's password:   # 密码输入不显示,正常输入后直接按回车就行
    sftpuser:LandPower@192.168.8.203's password:
    Connected to 192.168.8.203.
    sftp> pwd
    Remote working directory: /
    sftp> put /etc/ssh/sshd
    sshd_config         sshd_config.backupsftp> put /etc/ssh/sshd_config /upload
    Uploading /etc/ssh/sshd_config to /upload/sshd_config /etc/ssh/sshd_config                                                                                                                                                         100% 3906     9.9MB/s   00:00
    sftp> cd upload/
    sftp> ls
    sshd_configsftp> get sshd_config /home
    Fetching /upload/sshd_config to /home/sshd_config /upload/sshd_config                                                                                                                                                          100% 3906    10.1MB/s   00:00
    sftp>
    

2.2 SSH和SFTP服务监听端口分离

sftp,是ssh的功能之一,也就是说是使用SSH协议来传输文件的。
        OS系统内开启ssh服务和sftp服务都是通过/usr/sbin/sshd这个后台程序监听22端口,而sftp服务作为一个子服务,是通过/etc/ssh/sshd_config配置文件中的Subsystem实现的,如果没有配置Subsystem参数,则系统是不能进行sftp访问的。

  1. 拷贝/usr/lib/systemd/system/目录下的sshd.service文件,放到/etc/systemd/system/目录下,命名为sftpd.service

    cp /usr/lib/systemd/system/sshd.service  /etc/systemd/system/sftpd.service
  2. 拷贝/etc/pam.d/目录下的sshd文件,放到同目录,命名为sftpd
    cp /etc/pam.d/sshd  /etc/pam.d/sftpd
  3. 拷贝/etc/ssh/目录下的sshd_config文件,放到同目录,命名为sftpd_config 
    cp /etc/ssh/sshd_config  /etc/ssh/sftpd_config
  4. 对service和rcsftpd进行软连接 
    ln -sf  /usr/sbin/service  /usr/sbin/rcsftpd
  5. 对sshd和sftpd进行软连接 
    ln -sf  /usr/sbin/sshd  /usr/sbin/sftpd
  6. 拷贝/etc/sysconfig/目录下的sshd文件,放到同目录,命名为sftp 
    cp /etc/sysconfig/sshd  /etc/sysconfig/sftp
  7. 拷贝/var/run/目录下的sshd.pid文件,放到同目录,命名为sftpd.pid 
    cp /var/run/sshd.pid  /var/run/sftpd.pid
  8. 修改/etc/systemd/system/目录下sftpd.service文件 
    vi /etc/systemd/system/sftpd.service# 作者:wan.tao
    # 时间:2022/09/26[Unit]
    Description=sftpd server daemon
    Documentation=man:sshd(8) man:sshd_config(5)
    After=network.target sshd-keygen.service
    Wants=sshd-keygen.service[Service]
    Type=notify
    EnvironmentFile=/etc/sysconfig/sftp
    ExecStart=/usr/sbin/sftpd -f /etc/ssh/sftpd_config
    ExecReload=/bin/kill -HUP $MAINPID
    KillMode=process
    Restart=on-failure
    RestartSec=42s[Install]
    WantedBy=multi-user.target
    
  9. 修改/etc/ssh/目录下的sftpd_config文件 
    #Port 22
    改成
    Port 2233#PermitRootLogin yes
    改成
    PermitRootLogin no
    也就是取消该行的注释,并将yes改成no,这行参数的目的是拒绝root用户登录#PidFile /var/run/sshd.pid
    改成
    PidFile /var/run/sftpd.pid
    也就是取消该行的注释,并将sshd.pid改成sftpd.pidSubsystem sftp /usr/libexec/openssh/sftp-server
    注释
    #Subsystem sftp /usr/libexec/openssh/sftp-server,并添以下5行:
    Subsystem sftp internal-sftp      # 指定使用sftp服务使用系统自带的internal-sftp
    Match User sftpuser               # 匹配sftp组的用户,若要匹配多个组,可用逗号分开
    X11Forwarding no                  # 禁止用户使用端口转发
    AllowTcpForwarding no             # 禁止用户使用端口转发
    ForceCommand internal-sftp        # 只能用于sftp登录
    
  10. 清空/var/run/目录下的sftpd.pid文件内容
    > /var/run/sftpd.pid
  11. 禁用selinux
    setenforce 0
    sed -i "s/^SELINUX\=enforcing/SELINUX\=disabled/g" /etc/selinux/config
    
  12. 重启sftpd服务并添加自启动
    systemctl daemon-reloadsystemctl restart sftpdsystemctl enable sftpdsftp -P 2233 sftpuser:LandPower@192.168.8.203
    

3 一键安装脚本

只包含SFTP安装相关的,其他相关脚本自行添加。

#!/bin/sh
#sftp 根文件地址
RPM_PATH=/home/LdRun/data/sftp# 创建sftp文件目录
if [ -d $RPM_PATH ];thenecho "sftp 文件夹存在"
elsemkdir -p $RPM_PATH/sftpuserecho "sftp文件夹不存在,已新创建"
fi
chown root:root $RPM_PATH/sftpuser
chmod 755 $RPM_PATH/sftpuser# 新建用户组sftp
groupadd sftp
# 新建用户sftpuser,并且设置不支持ssh系统登录,只能登录sftp服务器
# -g 用户组; -d 指定家目录; -s 不能登陆系统; -M 不创建家目录
useradd -g sftp -d $RPM_PATH/sftpuser -M -s /sbin/nologin sftpuser
# 设置密码
# echo "新密码" | passwd --stdin 用户名
echo "LandPower" | passwd --stdin sftpuser# 由于/data/sftp/sftpuser的用户是root,其它用户都没有写的权限
# 所以要在该目录下新建一个目录用于文件的上传下载
# 创建sftp文件目录
if [ -d $RPM_PATH/sftpuser/upload ];thenecho "sftp/upload 文件夹存在"
elsemkdir -p $RPM_PATH/sftpuser/uploadecho "sftp/upload 文件夹不存在,已新创建"
fi
chown sftpuser:sftp $RPM_PATH/sftpuser/upload
chmod 755 $RPM_PATH/sftpuser/upload# 配置sftp
# 防止后期配置文件出错后无法还原
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
sed -i "s/Subsystem*/#Subsystem/g" /etc/ssh/sshd_config
sed -i '$a\ Subsystem sftp internal-sftp\n Match Group sftp\n ChrootDirectory /home/LdRun/data/sftp/%u\n ForceCommand internal-sftp\n AllowTcpForwarding no\n X11Forwarding no' /etc/ssh/sshd_config
systemctl restart sshd.service

Centos7.9配置SFTP教程相关推荐

  1. CentOS7 安装配置SFTP服务器详解

    CentOS7 安装配置SFTP服务器详解 1.SFTP简介 SSH文件传输协议(英语:SSH File Transfer Protocol,也称Secret File Transfer Protoc ...

  2. 快手版-CentOS7系统安装配置图解教程

    原文地址 Centos6的安装教程 目录 1. 安装CentOS 1.1 进入引导界面 1.2 进入安装总览界面 1.3 进入语言选择界面(可选) 1.4 进入磁盘分区界面 1.4.1 选择手动配置分 ...

  3. vnc安装linux教程,Centos7安装配置vncserver详细教程

    CentOS7安装配置vncserver教程 一.安装VNC 首先要保证目标服务器安装有图形化环境,Linux系统下常见的桌面环境有GNOME和KDE,这里我们首先通过Group的方式安装GNOME桌 ...

  4. 2021-04-20 #CentOS7配置sftp服务器操作日志#

    #CentOS7配置sftp服务器操作日志# 1.编辑/etc/ssh/sshd_config配置文件 注释Subsystem sftp /usr/libexec/openssh/sftp-serve ...

  5. centos php sftp 扩展,Linux(CentOS)上配置 SFTP

    配置 sftp 相比传统的 ftp 服务,SFTP 显得更加方便.安全,一般系统安装了 ssh 后,默认就安装了这个服务,我们只要简单的配置一下就可以了. 但是 SFTP 账号是基于 SSH 账号的( ...

  6. linux sftp 中文,Linux(CentOS)上配置 SFTP服务器

    Linux(CentOS)上配置 SFTP服务器 发布于 2017-03-13 06:07:46 | 87 次阅读 | 评论: 0 | 来源: 网友投递 LinuxLinux是一套免费使用和自由传播的 ...

  7. linux配置sftp-server,Ubuntu Server如何配置SFTP(建立用户监狱)

    SSH File Transfer Protocol是一个比普通FTP更为安全的文件传输协议.(参考资料:http://en.wikipedia.org/wiki/SSH_File_Transfer_ ...

  8. win10下VMware安装CentOS7并配置网络

    win10下VMware安装CentOS7并配置网络 虚拟机安装网上教程很多,碰到问题也容易解决,这里就记录下便于自己翻越,有不足之处还请指明,不吝赐教~~~(ps:多图预警) 安装VMware 首先 ...

  9. ssm实现文件上传到SFTP服务器,centos7系统配置记录SFTP操作日志

    1.修改ssh配置 [root@elk-node2 ~]# vim /etc/ssh/sshd_config 大概132行把下面这个句注释掉 #Subsystem       sftp    /usr ...

最新文章

  1. java length 使用方法 例题_java.util.BitSet.length()方法实例
  2. 对讲机服务器信号不好怎么办呢,手机信号不好是什么原因?该怎么办?教你一招立马解决(绝对有效)...
  3. 代码优化之减少重复代码-实践
  4. Boost::context模块callcc的circle测试程序
  5. 微服务整合系列整个代码
  6. 针对plsql developer使用做的三个小设置
  7. lol修改服务器域名,LOL历史转区用户解冻大区官网自助系统地址 新版申请解冻账号网址...
  8. MySQL 删除用户权限
  9. 21.TCP/IP 详解卷1 --- TCP 的超时与重传
  10. 皮尔森相关系数、皮尔逊相关系数(Pearson correlation coefficient)的存在性问题
  11. 10的多少次方 oracle_Oracle SQL計算平方根、立方根、次方
  12. Vokenization:一种比GPT-3更有常识的视觉语言模型
  13. 数据分析-思维分析逻辑day04
  14. 盘点 | Github上的18个顶级深度学习项目
  15. 176310 Can’t place multiple pins assigned to pin location Pin_K22(IOPAD_X77_Y33_N14)(FPGA编译出现复用引脚)
  16. uniapp 电商app 下载页面功能实现
  17. 朕 JAVAEE 实验02 实验报告
  18. 嵌入式linux解决方法 | bin文件烧写不到SD卡中
  19. hpcmpmgr.exe
  20. Docker搭建Mesos体系

热门文章

  1. ios 计算月数、周数、天数
  2. 华为鸿蒙 HarmonyOS 2 正式发布
  3. 数字角频率Ω 和 模拟角频率w
  4. c语言编程单片机中的sbit,单片机c语言的sbit和sfr
  5. mongoDB之ObjectId
  6. 学术工具-3分钟玩转毕业论文文献引用及文献计量可视化分析(CNKI版)
  7. 努力的富二代多可怕?曾畅销全球,每天卖出130万瓶的国货大牌“交班”后卖不动了!...
  8. python opencv旋转图片
  9. 【回归预测-DELM】基于多元宇宙优化算法改进深度学习极限学习机实现数据回归预测附matlab代码
  10. 苹果6性能测试软件,6款旧iPhone运行iOS14.6速度测试:只有它速度更慢了?