学习目标:

能够完成sftp服务的部署,且实现ssh和sftp的端口分离,不使用默认的端口,sftp用户的权限只可以访问该用户的家目录里的文件和其下的子目录,实现权限控制。

学习内容:

SFTP是SSH的一部分,SFTP没有单独的守护进程,它必须使用SSHD守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像是一个服务器程序,而更像是一个客户端程序。

检查sftp 服务是否可用​

1.1、systemctl status sshd

1.2、systemctl status sftpd

系统内开启ssh服务和sftp服务都是通过/usr/sbin/sshd这个后台程序监听22端口,而sftp服务作为一个子服务,是通过/etc/ssh/sshd_config配置文件中的Subsystem实现的,如果没有配置Subsystem参数,则系统是不能进行sftp访问的

从ssh服务分离sftp服务

  1. 复制SSH相关文件,作为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

  1. 修改配置文件
    1、 修改/etc/systemd/system/目录下sftpd.service文件

vim /etc/systemd/system/sftpd.service

[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

  1. 修改/etc/ssh/目录下的sftpd_config文件
    vim /etc/ssh/sftpd_config

下面标红的需要执行,标绿的可不执行,看自己是否需要单独设置允许root登录和其他用户怎么管理而定

①找到第17行,将

Port 22

改成

Port 20022

②找到第38行,将

#PermitRootLogin yes

改成

PermitRootLogin no

就是取消该行的注释,并将yes改成no,这行参数的目的是拒绝root用户登录

③找到116行,将

#PidFile /var/run/sshd.pid

改成

PidFile /var/run/sftpd.pid

就是取消该行的注释,并将sshd.pid改成sftpd.pid

④找到第132行,将

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

注释

#Subsystem sftp /usr/libexec/openssh/sftp-server并添以下5行

Subsystem sftp internal-sftp

Match User sftpuser
ChrootDirectory /home/sftpuser/ ##此配置是指定sftp用户的家目录,可访问的目录

drwxr-xr-x.  4 root     root      4096 Aug  9 15:16 homedrwxr-xr-x 3 root root 4096 Aug  9 16:38 sftpuserdrwxrwxrwx 3 sftpuser sftpuser 4096 Aug  9 19:42 csm

ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no

就是注释132行,并将132行下面,添加5行内容。

  1. 清空/var/run/目录下的sftpd.pid文件内容
    echo “” > /var/run/sftpd.pid
  2. 添加sftp的专用账户
    useradd sftpuser
    passwd sftpuser
    usermod -s /bin/false sftpuser
  3. 重启sftpd服务
    systemctl daemon-reload
    systemctl start sftpd
  4. 查看ssh服务和sftp服务状态
    systemctl status sshd
    systemctl status sftpd
  5. 查看端口分离情况
    lsof -i:22
    lsof -i:20022
  6. 登录验证
    sftp -P 20022 user @serverip
    sftp -P 22 user @serverip

说明:
如果后续不想让用户通过22好端口登录服务,可修改、etc/ssh/sshd_config文件,注释掉
#Subsystem sftp /usr/libexec/openssh/sftp-server
然后重启ssh服务

学习产出:

能够完成sftp服务的搭建并实现端口分离,可以随意自定义端口

搭建SFTP服务,并SSH和SFTP端口分离、用户权限控制相关推荐

  1. Java系列技术之SSH整合+用户权限控制模型项目-钟洪发-专题视频课程

    Java系列技术之SSH整合+用户权限控制模型项目-62人已学习 课程介绍         将前面讲过的Spring5.SpringMVC.Hibernate5和前端框架Easyui整合起来最终完成一 ...

  2. linux ssh和sftp区别,Linux SSH和SFTP配置

    SSH 文章目录 SSH SSH密钥对 ssh config 端口转发 关闭密码登录 远程命令 SFTP命令 新建SFTP用户 问题 SSH密钥对 服务器 输入命令:ssh-keygen -t rsa ...

  3. linux ssh和sftp区别,使用 SSH 和 SFTP 协议

    导读 通过 SSH 和 SFTP 协议,我们能够访问其他设备,有效而且安全的传输文件等等. 几年前,我决定配置另外一台电脑,以便我能在工作时访问它来传输我所需要的文件.要做到这一点,最基本的一步是要求 ...

  4. Ubuntu 20.04的SSH安装及启用root用户权限

    需求 Ubuntu系统安装后,默认是没有安装openssh的,因此需要安装之后才能进行远程的操作.即便是安装了openssh之后,远程也是无法用root用户进行连接的. 修改root密码 Ubuntu ...

  5. linux sftp ssh端口分开,Linux SSH和SFTP服务分离

    原理: 创建两个'sshd'进程,一个作为ssh服务的deamon,一个作为sftp服务的deamon. ssh服务和sftp服务分离之前: 系统内开启ssh服务和sftp服务都是通过/usr/sbi ...

  6. linux sftp权限设置,Linux设置SFTP服务用户目录权限

    我们有时会遇到这样的需求,限制一个Linux用户,让他只能在指定的目录下进行添加.修改.删除操作,并且只能使用sftp登录服务器,不能用ssh操作.这些可以通过配置sftp服务实现. 提供sftp服务 ...

  7. Linux设置SFTP服务用户目录权限

    我们有时会遇到这样的需求,限制一个Linux用户,让他只能在指定的目录下进行添加.修改.删除操作,并且只能使用sftp登录服务器,不能用ssh操作.这些可以通过配置sftp服务实现. 提供sftp服务 ...

  8. CentOS7.6-搭建SFTP服务

    1.需求 搭建多账号SFTP,不同的用户只能够查看自己所属的目录 禁止SFTP账号通过SSH连接 SFTP 用户demo1.demo2,所属目录:/data/sftp/demo1./data/sftp ...

  9. 15.4 xshell使用xftp传输文件 15.5 使用pure-ftpd搭建ftp服务

    15.4 xshell使用xftp传输文件 15.5 使用pure-ftpd搭建ftp服务 扩展 vsftp使用mysql存放虚拟用户并验证 http://www.aminglinux.com/bbs ...

最新文章

  1. 图数据库Neo4j的介绍与使用
  2. fastreport 打印两个list_Smaller And Smarter Python数据结构:合并两个有序链表
  3. 这只猫在云端定居了?边缘计算在天猫精灵云应用上的落地实践
  4. IE9 Platform Preview 3昨天发布
  5. POJ-1087 A Plug for UNIX 网络流
  6. 突破变态限制快捷方式提权法
  7. 《OpenStack实战指南》—— 1.4 OpenStack与CloudStack的比较
  8. socket创建失败_python3从零学习-5.8.1、socket—底层网络接口
  9. 如何使用dos启动mysql数据库_如何使用dos命令启动停止mysql数据库?
  10. OpenCV图像预处理常用函数及流程
  11. PyConChina 2019 深圳站之行
  12. 《卫星与网络》分析孙宇晨为什么选择蓝色起源
  13. Win7电脑无法安全删除硬件并弹出媒体的解决方法
  14. Powermill汽车件模具五轴数控CNC编程视频教程
  15. 用格式工厂旋转手机视频
  16. 内联(inlining)
  17. BusyBox 的配置
  18. bugku-web-source
  19. 基于springboot的中医健康管理系统
  20. 【观察】戴尔VxRail 8:无缝衔接VMware新技术,重塑下一代超融合系统

热门文章

  1. Java练手项目4:基于SSM的网上求职招聘系统
  2. 网络性能测试工具 -- iperf
  3. 一文读懂,Android中的硬件加速
  4. ubuntu消除登录痕迹
  5. 2023年10个最适合外贸网站的WordPress主题推荐
  6. kali linux复制粘贴快捷键
  7. 关于调整网站售票时间的公告
  8. spring 生命周期最详解
  9. Java中的单例设计模式
  10. 安卓数据转移到iphone老是中断_旧iPhone数据如何转移新iPhone里面