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. ...
随机推荐
- Handler用法总结
一.线程通讯问题 1.1 Message.Handler.Looper 在Android中提供了一种异步回调机制Handler,我们可以它来完成一个很长时间的任务. Handler基本使用: 在主线程 ...
- HTTP协议---三次握手
HTTP协议 关于协议 对于应用层开发人员,接触最多的网络协议通常都是传输层的TCP,为什么这么说,因为再往上的应用层协议,如:HTTP.HTTPS.POP3.SMTP.RPC.FTP.TELNE ...
- poj 3624 Charm Bracelet(01背包)
Charm Bracelet Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 29295 Accepted: 13143 ...
- Koa2 遇到Method Not Allowed 获取不到返回值
https://q.cnblogs.com/q/114462/ 都来找我 Haisen‘s blogs 求求各位大神了,2点多了没解决睡不着啊,我按照网上用的koa2-cors,g ...
- Python--day39--管道和数据共享(面试可能会问到)
1,管道 上面所述挂起即为阻塞 管道.py from multiprocessing import Pipe, Process def func(conn1,conn2): conn2.close() ...
- java接口和抽象类的比较
相同点: 都位于继承的顶端,用于被其他实现或继承; 都不能实例化; 都包含抽象方法,其子类都必须覆写这些抽象方法; 区别: 抽象类为部分方法提供实现,避免子类重复实现这些方法,提供代码重用性;接口 ...
- SVN提示update更新成功,但是本地文件却没有更新
问题描述:将仓库的最新版本代码check out到本地后,然后最某个文件做了修改,保存后想通过svn的update来重新得到最新的版本,发现失效. 原因:经过多方查找原因,主要看了以下两篇文档 htt ...
- linux inode 结构
inode 结构由内核在内部用来表示文件. 因此, 它和代表打开文件描述符的文件结构是不 同的. 可能有代表单个文件的多个打开描述符的许多文件结构, 但是它们都指向一个单个 inode 结构. ino ...
- There is no PasswordEncoder mapped for the id "null"的解决办法
今日在SpringBoot项目中使用 Spring Security ,登录时发现报500错,报错信息如下: There is no PasswordEncoder mapped for the id ...
- Hamcrest使用
What is Hamcrest? 什么是Hamcrest? Hamcrest is a library of matchers, which can be combined in to crea ...