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. ...
随机推荐
- Centos 6.5 配置hadoop2.7.1
1 Centos 6.5 编译hadoop2.7.1 主机配置: sudo yum install gcc gcc-c++ sudo yum install ncurses-devel sudo yu ...
- 第三章 通过java SDK 实现个性化智能合约的部署与测试
想了解相关区块链开发,技术提问,请加QQ群:538327407 前提 已经部署好底层,外网可以正常请求访问. 正常流程 1.基础合约处理 https://fisco-bcos-documentatio ...
- WPF 从零开始开发 dotnet Remoting 程序
本文告诉大家如何不使用框架,从零开始开发一个 dotnet remoting 程序 在我的另一篇博客 WPF 使用RPC调用其他进程 就大概告诉了大家如何在 WPF 使用 dotnet remotin ...
- 利用python第三方库提取PDF文件的表格内容
小爬最近接到一个棘手任务:需要提取手机话费电子发票PDF文件中的数据.接到这个任务的第一时间,小爬决定搜集各个地区各个时间段的电子发票文件,看看其中的差异点.粗略统计下来,PDF文件的表格框架是统一的 ...
- com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1680 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
这个错误是由于mysql的一个系统参数max_allowed_packet设置的值过小引起的 解决这个错误的方法就是修改这个参数的值, linux系统中我们在etc目录下找到my.cnf这个文件,打开 ...
- 并查集的超市问题---溜TM的
三个月前我就错了,现在又错了,我就是个傻****** 服了,看图哇 打扰了... #include<cstdio> #include<iostream> #include< ...
- HashMap面试题解答
一.HashMap的实现原理? 此题可以组成如下连环炮来问 你看过HashMap源码嘛,知道原理嘛?为什么用数组+链表?hash冲突你还知道哪些解决办法?我用LinkedList代替数组结构可以么?既 ...
- alpha week 1/2 Scrum立会报告+燃尽图 06
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/9916 小组名称:“组长”组 组长:杨天宇 组员:魏新,罗杨美慧,王歆瑶, ...
- fastdfs基本安装流程和集成springboot总结
FastDFS介绍 1.简介 FastDFS 是一个开源的高性能分布式文件系统(DFS). 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡.主要解决了海量数据存储问题,特别适合以 ...
- leetcode.769旋转字符串
给定两个字符串, A 和 B. A 的旋转操作就是将 A 最左边的字符移动到最右边. 例如, 若 A = 'abcde',在移动一次之后结果就是'bcdea' .如果在若干次旋转操作之后,A 能变成B ...