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

SFTP是使用加密传输认证信息传输数据,所以SFTP是非常安全的。

本手册是在centos7.5系统上进行编写,理论上支持centos7.0以上版本

一、确定服务器SFTP可用

使用Xshell工具连接SFTP服务器,输入systemctl status sshd,查看结果如下,表示机器SFTP已打开且可用

若SFTP未开启,通过命令systemctl start sshd开启

SFTP服务关闭命令为:systemctl stop sshd

二、分离SSH和SFTP服务

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

具体操作如下:

2.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

2.2    修改复制好的配置文件

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

2、    修改/etc/ssh/目录下的sftpd_config文件

vim /etc/ssh/sftpd_config

具体修改如下:

①找到第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

X11Forwarding no

AllowTcpForwarding no

ForceCommand internal-sftp

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

3、    清空/var/run/目录下的sftpd.pid文件内容

# > /var/run/sftpd.pid

将内容删掉

4、    添加sftp的专用账户

useradd  sftpuser

passwd  sftpuser

usermod  -s  /bin/false sftpuser

5、    禁用selinux

setenforce 0

sed -i "s/^SELINUX\=enforcing/SELINUX\=disabled/g" /etc/selinux/config

6、    重启sftpd服务

systemctl daemon-reload

systemctl start sftpd

三、测试SFTP

使用xftp软件,连接修改好的服务器,通过新建的用户和端口连接

连接成功

Linux 7.5 SSH服务和SFTP服务分离的更多相关文章

  1. linux 启动ftp服务,sftp服务

    启动ftp服务:yum install vsftpd 在/etc/rc.d/init.d/目录下:命令 service vsftp start启动ssh服务,sftp服务在/etc/init.d/目录 ...

  2. Linux中通过ssh将客户端与服务端的远程连接

    前提需要:1.在VMware中装上两台linux虚拟机,本博客使用的都是CentOS 7.2.两部虚拟机可以通过命令ping通.3.两部虚拟机中已经通过yum本地仓库安装了sshd服务. 首先  1. ...

  3. Linux之sftp服务

    Linux之sftp服务 一.sftp介绍转自:[1]Linux如何开启SFTP https://www.cnblogs.com/xuliangxing/p/7120205.htmlSFTP是Secu ...

  4. centos7服务搭建常用服务配置之一:SSH

    目录 1 SSH服务协议 1.1 ssh服务协议说明 1.2 ssh服务工作机制 1.3 ssh加密技术说明 1.3.1 ssh实现安全链接建立,利用要是和锁头 1.3.2 ssh加密算法 1.4 s ...

  5. buildroot 添加ssh,以及使用stftp 服务

    上一篇水了一下关于buildroot的基本操作,这一章水一下开启SSH服务以及配置sftp服务,以及静态IP的设置. 配置: make menuconfig Target packages  ---& ...

  6. Linux SSH和SFTP服务分离

    Linux SSH和SFTP服务分离 学习了:https://www.cnblogs.com/zihanxing/articles/5665383.html 都是监听22端口:

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

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

  8. Linux 下开启ssh服务(转)

    二.SSH SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为建立在应用层和传输层基础上的安全协议.SSH 是目 ...

  9. linux 系统的ssh服务

    ssh服务由服务端软件Openssh和客户端(常见的有ssh,SecureCRT,putty,xshell)组成,ssh服务默认使用22端口提供服务,它有两个不兼容的ssh协议版本,分别是1.x和2. ...

随机推荐

  1. Spring的注解@Qualifier注解

    @Qualifier注解了,qualifier的意思是合格者,通过这个标示,表明了哪个实现类才是我们所需要的,我们修改调用代码,添加@Qualifier注解,需要注意的是@Qualifier的参数名称 ...

  2. laravel-admin新手的使用

    1.添加页面 配置好laravel-admin的模板后 点击管理员管理里的菜单列表,输入如下信息即可 提交之后刷新页面,左侧菜单就会显示新增的广告管理的标签 2.定义路由 配置好前端的页面显示之后就要 ...

  3. mysql ”Invalid use of null value“ 解决方法

    1.问题描述 因为要更改"information"表中的"编号"列为非空,使用数据库查询语句“alter table information modify '编 ...

  4. C# 高级面试题

    很少会有人可以答对,如果你遇到一个来面试的人实在嚣张,就可以用本文的题去打击 本文内容就看着玩,请不要在严肃的面试中问题这样的题目 如果面试到一个人可以回答出下面的题目也不能证明他的技术很强,只能说明 ...

  5. linux 每-CPU 的变量

    每-CPU 变量是一个有趣的 2.6 内核的特性. 当你创建一个每-CPU 变量, 系统中每个处理 器获得它自己的这个变量拷贝. 这个可能象一个想做的奇怪的事情, 但是它有自己的优点. 存取每-CPU ...

  6. Linux 内核 kobject 初始化

    本书已经展示了许多数据类型, 带有简单的在编译或者运行时初始化机制. 一个 kobject 的初始化有些复杂, 特别当使用它的所有函数时. 不管一个 kobject 如何使用, 但是, 必须进行几个步 ...

  7. Java 学习笔记(11)——多线程

    Java内部提供了针对多线程的支持,线程是CPU执行的最小单位,在多核CPU中使用多线程,能够做到多个任务并行执行,提高效率. 使用多线程的方法 创建Thread类的子类,并重写run方法,在需要启动 ...

  8. Android APP前后台状态切换

    getActivity().getApplication().registerActivityLifecycleCallbacks(new Application.ActivityLifecycleC ...

  9. Java 学习笔记(4)——面向对象

    现在一般的语言都支持面向对象,而java更是将其做到很过分的地步,java是强制使用面向对象的写法,简单的写一个Hello Word都必须使用面向对象,这也是当初我很反感它的一点,当然现在也是很不喜欢 ...

  10. CentOS7.6部署ceph环境

    CentOS7.6部署ceph环境 测试环境: 节点名称 节点IP 磁盘 节点功能 Node-1 10.10.1.10/24 /dev/sdb 监控节点 Node-2 10.10.1.20/24 /d ...