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. H3C 用debugging ppp all命令调试PPP

  2. Date和Calendar

    处理日期,时间: 大部分的方法已过时,不推荐使用,但是你使用过时的方法也不会报错. Date() 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒). Date(long date) ...

  3. IP地址和物理地址有什么区别

    所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址.简单地说就是你在整个互联网上的ID. MAC(Media Access Control,介质访问控制)地址 (物理地址)是 ...

  4. MySQL 数据库中如何把A表的数据插入到B表?

    web开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要指定导入字段,设置只需要导入目标表中不存在的记录,虽然这些都可以在程序中拆分成简单sql来实现,但是用一个sql的话,会节省大量代码 ...

  5. P1018 灵灵排数字

    题目描述 今天灵灵收到了n张卡片,他需要给他们从小到大排序. 输入格式 输入的第一行包含一个整数 \(n(1 \le n \le 10^5)\) . 输入的第二行包含 \(n\) 个正整数,以空格间隔 ...

  6. H3C DNS域名解析完整过程

  7. ASP.NET MVC4.0+EF+LINQ+bui+bootstrap+网站+角色权限管理系统(4)

    接下来就是菜单管理了,菜单分为两部分,一部分是菜单管理,另一部分是左边的树形菜单 数据库添加菜单表Menus USE [MVCSystem] GO /****** Object: Table [dbo ...

  8. Linux内核 结构 struct urb

    struct urb 结构中和 USB 设备驱动有关的成员是: struct usb_device *dev 指向这个 urb 要发送到的 struct usb_device 的指针. 这个变量必须被 ...

  9. 路由器OpenWrt如何脱机(离线)下载BT文件

    路由器OpenWrt如何脱机(离线)下载BT文件 1.首先到如下网址下载OpenWrt固件(确保为路由器正确型号). http://downloads.openwrt.org/snapshots/tr ...

  10. .Net Core解除文件上传大小限制

    一共要修改两处地方: \Startup.cs public void ConfigureServices(IServiceCollection services) { services.AddMvc( ...