当前位置: 首页 > news >正文

ssh和sftp服务分离

目录

  • 一、增加sftp的deamon
  • 二、增加sftp的service
  • 三、其他配套文件
  • 四、修改配置文件
  • 五、分别重启两个服务:

由于安全需要,客户这边想把sftp使用的端口与ssh使用的端口分开。

我们知道sftp没有自己的服务器守护进程,它需要依赖sshd守护进程来完成客户端的连接操作。sftp服务作为ssh的一个子服务,是通过/etc/ssh/sshd_config配置文件中的Subsystem实现的,如果没有配置Subsystem参数,则系统是不能进行sftp访问的。所以,要分离ssh和sftp服务的话,基本的思路是创建两个sshd进程,分别监听在不同的端口,一个作为ssh服务的deamon,另一个作为sftp服务的deamon。

分离步骤如下:

一、增加sftp的deamon

为了方便,我们将sftp服务的后台程序命名为/usr/sbin/sftpd。/usr/sbin/sftpd做一个连接指向/usr/sbin/sshd。

ln -sf /usr/sbin/sshd /usr/sbin/sftpd

二、增加sftp的service

实现sftp服务时,将/usr/lib/systemd/system/sshd.service 复制到 /etc/systemd/system/sftpd.service,然后修改sftpd.service文件内容。

cp -a /usr/lib/systemd/system/sshd.service /etc/systemd/system/sftpd.service[root@tongweb RMANTEST]# vi /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/sftpd                     #(这行需要修改)
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
systemctl enable sftpd.service

如果,openssh采用二进制包升级过,比如从OS自带的7.4p1版本升级到8.6p1版本,sftpd.service文件中需要做下面的修改:

[Service]
Type=simple

三、其他配套文件

  • 复制/etc/pam.d/目录下的sshd文件,放到同目录,命名为:sftpd
cp -a /etc/pam.d/sshd  /etc/pam.d/sftpd
  • 复制/etc/ssh/目录下的sshd_config文件,放到同目录,命名为:sftpd_config
cp  -a /etc/ssh/sshd_config  /etc/ssh/sftpd_config
  • 复制/etc/sysconfig/目录下的sshd文件,放到同目录,命名为:sftpd
cp -a /etc/sysconfig/sshd  /etc/sysconfig/sftpd 
  • 创建sftp服务运行pid文件
touch /var/run/sftpd.pid

四、修改配置文件

修改参数,适配sftp服务,同时在ssh服务中停掉sftp服务。

  • 修改sftpd配置文件
vim /etc/ssh/sftpd_config修改Port 22为Port 3322,并去掉注释。
修改#PidFile /var/run/sshd.pid,为PidFile /var/run/sftpd.pid
注释掉Subsystem      sftp    /usr/local/openssh/libexec/sftp-server
在文件末尾增加以下内容:Subsystem sftp internal-sftp
Match User sftpuser                       ##限制用户
ChrootDirectory /sftpdir                  ##限制sftp目录
X11Forwarding no                          ##与sftp无关,所以关闭
AllowTcpForwarding no                     ##与sftp无关,所以关闭
PermitTTY no                              ##不允许登入TTY
ForceCommand internal-sftp
  • 修改sshd配置文件
vim /etc/ssh/sshd_config取消注释,PidFile /var/run/sshd.pid
增加注释,#Subsystem,即停掉sftp子服务

五、分别重启两个服务:

systemctl restart sshd
systemctl restart sftpd

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JavaScript基础第五天
  • C++初阶:适合新手的手撕vector(模拟实现vector)
  • django安装使用
  • 15000+POC漏洞扫描工具
  • 五分钟用FRP实现win10远程桌面
  • 什么是集群服务器
  • Qt知识点总结目录
  • 单片机学习笔记---串口通信(2)
  • STM32F1 - 标准外设库_规范
  • kyuubi 接入starrocks | doris
  • 耳机壳UV树脂制作耳机壳的工艺流程是什么?
  • 2 月 7 日算法练习- 数据结构-并查集
  • BTC交易数据 - 文章索引
  • 计算机网络相关题目及答案(第四章)
  • Linux第45步_通过搭建“DNS服务器”学习图形化配置工具
  • 0基础学习移动端适配
  • Android优雅地处理按钮重复点击
  • Apache Spark Streaming 使用实例
  • bearychat的java client
  • canvas绘制圆角头像
  • github从入门到放弃(1)
  • Java深入 - 深入理解Java集合
  • Map集合、散列表、红黑树介绍
  • rabbitmq延迟消息示例
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Spring框架之我见(三)——IOC、AOP
  • ucore操作系统实验笔记 - 重新理解中断
  • 分布式熔断降级平台aegis
  • 技术发展面试
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 那些年我们用过的显示性能指标
  • 盘点那些不知名却常用的 Git 操作
  • 数组大概知多少
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​520就是要宠粉,你的心头书我买单
  • ### RabbitMQ五种工作模式:
  • #### go map 底层结构 ####
  • #nginx配置案例
  • $L^p$ 调和函数恒为零
  • (7)摄像机和云台
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一) 初入MySQL 【认识和部署】
  • (一)VirtualBox安装增强功能
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .net(C#)中String.Format如何使用
  • :“Failed to access IIS metabase”解决方法
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • []C/C++读取串口接收到的数据程序
  • [AI Google] 使用 Gemini 取得更多成就:试用 1.5 Pro 和更多智能功能