Linux 7.5 SSH服务和SFTP服务分离
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服务分离的更多相关文章
- linux 启动ftp服务,sftp服务
启动ftp服务:yum install vsftpd 在/etc/rc.d/init.d/目录下:命令 service vsftp start启动ssh服务,sftp服务在/etc/init.d/目录 ...
- Linux中通过ssh将客户端与服务端的远程连接
前提需要:1.在VMware中装上两台linux虚拟机,本博客使用的都是CentOS 7.2.两部虚拟机可以通过命令ping通.3.两部虚拟机中已经通过yum本地仓库安装了sshd服务. 首先 1. ...
- Linux之sftp服务
Linux之sftp服务 一.sftp介绍转自:[1]Linux如何开启SFTP https://www.cnblogs.com/xuliangxing/p/7120205.htmlSFTP是Secu ...
- centos7服务搭建常用服务配置之一:SSH
目录 1 SSH服务协议 1.1 ssh服务协议说明 1.2 ssh服务工作机制 1.3 ssh加密技术说明 1.3.1 ssh实现安全链接建立,利用要是和锁头 1.3.2 ssh加密算法 1.4 s ...
- buildroot 添加ssh,以及使用stftp 服务
上一篇水了一下关于buildroot的基本操作,这一章水一下开启SSH服务以及配置sftp服务,以及静态IP的设置. 配置: make menuconfig Target packages ---& ...
- Linux SSH和SFTP服务分离
Linux SSH和SFTP服务分离 学习了:https://www.cnblogs.com/zihanxing/articles/5665383.html 都是监听22端口:
- Linux设置SFTP服务用户目录权限
我们有时会遇到这样的需求,限制一个Linux用户,让他只能在指定的目录下进行添加.修改.删除操作,并且只能使用sftp登录服务器,不能用ssh操作.这些可以通过配置sftp服务实现. 提供sftp服务 ...
- Linux 下开启ssh服务(转)
二.SSH SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为建立在应用层和传输层基础上的安全协议.SSH 是目 ...
- linux 系统的ssh服务
ssh服务由服务端软件Openssh和客户端(常见的有ssh,SecureCRT,putty,xshell)组成,ssh服务默认使用22端口提供服务,它有两个不兼容的ssh协议版本,分别是1.x和2. ...
随机推荐
- Flex AIR使用ADT命令打包 ipa
1. 配置环境变量. 2. 测试adt命令 3. 将ShepherdPhone0815.mobileprovision和 my.p12文件都放入编译好的工程目录下,如下图: 4.切换到上述编译好的目录 ...
- Codeforces Round #189 (Div. 1 + Div. 2)
A. Magic Numbers 不能出现连续的3个4,以及1.4以外的数字. B. Ping-Pong (Easy Version) 暴力. C. Malek Dance Club 考虑\(x\)二 ...
- java io流与序列化反序列化
java的io是实现输入和输出的基础,可以方便的实现数据的输入和输出操作. 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入 ...
- 21个项目玩转深度学习:基于TensorFlow的实践详解06—人脸检测和识别——项目集锦
摘自:https://github.com/azuredsky/mtcnn-2 mtcnn - Multi-task CNN library language dependencies comment ...
- H3C IPv6地址表示方式
- H3C DHCP服务器显示及维护
- jieba—parallel
jieba 并行处理进行测试,注意:并行分词仅支持默认分词器 jieba.dt 和 jieba.posseg.dt import sys import time import jieba jieba. ...
- PowerShell 通过 WMI 获取系统安装软件
本文告诉大家如何通过 WMI 获取系统安装的软件 通过 Win32_Product 可以获取系统安装的软件 Get-WmiObject Win32_Product | Format-List Capt ...
- 螺旋矩阵O(1)根据坐标求值
传送门 洛谷2239 •题意 从矩阵的左上角(第11行第11列)出发,初始时向右移动: 如果前方是未曾经过的格子,则继续前进,否则右转: 重复上述操作直至经过矩阵中所有格子. 根据经过顺序,在格子中依 ...
- Android利用Fiddler进行网络数据抓包,手机抓包工具汇总,使用mono运行filddler
Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...