原理:

创建两个‘sshd’进程,一个作为ssh服务的deamon,一个作为sftp服务的deamon.

ssh服务和sftp服务分离之前:

系统内开启ssh服务和sftp服务都是通过/usr/sbin/sshd这个后台程序监听22端口,而sftp服务作为一个子服务,是通过/etc/ssh/sshd_config配置文件中的Subsystem实现的,如果没有配置Subsystem参数,则系统是不能sftp访问的。

实现ssh服务和sftp服务分离:

1.两个deamon

要实现ssh和sftp分离,分别监听不同的端口,可以通过创建两个‘/usr/sbin/sshd’后台程序,一个监听22端口(ssh),一个监听20022端口(sftp),为了区分ssh和sftp服务的后台程序,这里将ssh服务的后台程序保持为/usr/sbin/sshd,而将sftp服务的后台程序改为/usr/sbin/sftpd。/usr/sbin/sftpd是/usr/sbin/sshd的一个链接,其内容完全相同(ln -sf /usr/sbin/sshd /usr/sbin/sftpd)。

2.两个service

SLES12使用systemd管理系统服务,ssh服务对应/usr/lib/systemd/system/sshd.service文件,实现sftp服务时可以将/usr/lib/systemd/system/sshd.service 复制到 /etc/systemd/system/sftpd.service,然后修改sftpd.service文件内容。(使用修改好的sftpd.service文件即可)

3.其他文件

系统的ssh服务是通过安装openssh实现的,可以通过rpm -ql openssh查看该rpm包含哪些文件。

总结实现ssh和sftp分离的相关的文件有:

ssh服务

sftp服务

/usr/lib/systemd/system/sshd.service

/etc/systemd/system/sftpd.service

(通过修改/usr/lib/systemd/system/sshd.service文件得到)

/etc/pam.d/sshd

/etc/pam.d/sftpd (通过复制 /etc/pam.d/sshd文件得到)

/etc/ssh/sshd_config

/etc/ssh/sftpd_config (通过复制/etc/ssh/sshd_config文件得到)

/usr/sbin/rcsshd

/usr/sbin/rcsftpd (ln -sf /usr/sbin/service /usr/sbin/rcsftpd)

/usr/sbin/sshd

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

/etc/sysconfig/ssh

/etc/sysconfig/sftp (通过修改/etc/sysconfig/ssh文件得到)

至此,我们已经实现了两个服务。

但是,ssh服务和sftp服务并没有真正的分离,此时已然可以通过22号端口使用ssh服务和sftp服务,而新开的20022端口也可以使用ssh服务(ssh -p 20022 username@serverip )和sftp服务(sftp -o Port=20022 username@serverip )。

4.关闭22号端口下的sftp服务

编辑/usr/sbin/sshd的配置文件/etc/ssh/sshd_config文件,将Subsystem参数注释掉,然后重启sshd

同时也可以设置可访问22号端口的用户白名单:

编辑/etc/ssh/sshd_config文件,设置AllowGroups参数(假设设置为AllowGroups sshonly),限制仅AllowGroups组内的用户可通过22号端口ssh登录系统(对于需要ssh登录系统的用户可通过usermod -A sshonly 将其加入到AllowGroups组内)

5.“关闭20022号端口下的ssh服务”

sftp作为一个子服务,它的开启依赖于ssh服务,因此不能从本质上关闭ssh服务而只开启sftp服务。

可以用以下方式来规避:

/usr/sbin/sftpd的配置文件/etc/ssh/sftpd_config中包含Subsystem参数配置(推荐使用Subsystem sftp internal-sftp -l INFO -f AUTH)

/etc/ssh/sftpd_config中包含AllowGroups参数(假设为AllowGroups sftponly),限制仅AllowGroups组内的用户可以访问20022端口

将AllowGroups组内的用户的shell改为/bin/false(usermod -s /bin/false ),使AllowGroups组内的用户仅能sftp登录系统(如果一个用户即需要ssh,又需要sftp,则不能将其shell改为/bin/false)

6.用户白名单配置

配置之后,需将系统内需要ssh访问系统的用户加入到sshonly组内,需将系统内需要sftp访问系统的用户加入到sftponly组,同时需要ssh和sftp的用户则sshonly和sftponly组都要加入。

7. 重启ssh服务和sftp服务,并设置开机启动

service sshd restart

service sftpd restart

访问ssh服务可使用:ssh username@serverip

分离后如何访问ssh/sftp

对于同时是sshonly组和sftponly组的成员的用户还可以使用

ssh -o Port=20022 username@serverip访问系统

访问sftp服务可使用:sftp -o Port=20022 username@serverip

附件sshsftpseparate_sles12.tar.gz使用说明:

将sshsftpseparate_sles12.tar.gz上传到服务器(需实现ssh和sftp分离的机器)上

解压:tar -xzvf sshsftpseparate_sles12.tar.gz

进入sshsftpseparate目录,编辑sshusers,sftpusers,sshsftpusers文件,将仅需要ssh的用户添加到sshusers文件中(每行一个),将仅需要sftp的用户添加到sftpusers文件中(每行一个),将既需要ssh又需要sftp的用户添加到sshsftpusers文件中(每行一个)。

最后执行一下set.sh脚本即可

sshsftpseparate目录下文件说明:

set.sh 完成ssh和sftp分离的自动化脚本

sftp /etc/sysconfig/sftp配置文件

sftpd.service /etc/system/system/sftpd.service文件

sftpd_config sftpd服务配置文件/etc/ssh/sftpd_config(可修改,包括sftp监听的20022端口等)

sftpusers 配置仅需要sftp的用户名单

sshusers 配置仅需要ssh的用户名单

sshsftpuser 配置既需要ssh又需要sftp的用户名单

linux sftp ssh端口分开,Linux SSH和SFTP服务分离相关推荐

  1. linux sftp ssh端口分开,Linux 7.5 SSH服务和SFTP服务分离

    SFTP是SSH的一部分,SFTP没有单独的守护进程,它必须使用SSHD守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像是一个服务器程序,而更像是一个客户端程序. ...

  2. linux sftp ssh端口分开,sftp ssh服务分离

    一.分离SSH和SFTP服务 系统内开启ssh服务和sftp服务都是通过/usr/sbin/sshd这个后台程序监听22端口,而sftp服务作为一个子服务,是通过/etc/ssh/sshd_confi ...

  3. linux 下ssh端口反弹,利用ssh隧道反弹shell

    说明 本文旨在分析rssh的源代码来学习利用ssh隧道来反弹shell.整个rssh只有1个347行的main文件,所以整体的逻辑结构也比较好分析.关于SSH端口转发的知识可以看实战SSH端口转发这篇 ...

  4. linux 重启21端口命令,修改SSH默认远程端口为21号端口

    在防火墙配置的规则下默认只开放了21端口,需要远程通过ssh管理服务器,经过测试可以设置,具体步骤如下. 一.修改sshd服务默认监听端口 #vim /etc/ssh/sshd_config 找到#p ...

  5. linux服务器调用端口超时,Linux服务器可以ping,但是telnet端口超时,网站wget超时,访问超时的解决办法...

    最近无法通过SSH连接Linux服务器,访问该服务器上的HTTP服务也出现异常.可以ping,但是telnet端口超时,网站wget超时,访问超时. 最后排查是内核配置问题 原来是 net.ipv4. ...

  6. Linux服务器禁用端口,Suse Linux常用端口开启、关闭、禁用

    Suse Linux常用端口开启.关闭.禁用 下面貌似没有什么直接开启或者关闭端口的命令,因为若仅仅只是开启了端口而不把它与进程相联系的话,端口的开启与关闭就显得毫无意义了(开了端口却没有程序处理进来 ...

  7. SSH端口转发(ssh隧道)

    在打DarkHole2靶机的时候,使用到了ssh端口转发,在网上搜集了很多资料,特此记录下来,以便后续查找 ssh端口转发 SSH 隧道 本地端口转发 远程端口转发 动态端口转发 当我们需要访问一台主 ...

  8. linux 开放连续端口,CentOS/Linux 开放80、8080端口或者开放某个端口

    iptables是linux系统自带的防火墙,功能强大,学习起来需要一段时间,下面是一些习iptables的时候的记录.如果iptables不熟悉的话可以用apf,是一款基于iptables的防火墙, ...

  9. linux监控网络端口流量,Linux 网络流量监控利器 iftop

    介绍 iftop 是 Linux 系统一个款免费的网卡实时流量监控工具,类似 top 命令.可以监控指定网卡的实时流量.端口连接信息.反向解析 IP 等.Linux系统下这样的工具还有很多,例如:ip ...

最新文章

  1. BZOJ 3105:[cqoi2013]新Nim游戏
  2. 小波变换和motion信号处理(三)(转)
  3. PIC单片机入门_汇编/混编/C编比较
  4. js中的preventDefault
  5. 20应用统计考研复试要点(part33)--简答题
  6. java 开发环境的搭建
  7. 骨牌覆盖问题总结!hihoCoder/ NYOJ-1273宣传墙1151
  8. concatenate mutliple videos in ffmpeg
  9. Scrapy和MongoDB的应用---爬取
  10. mysql统计年月周日_mysql 按年度、季度、月度、周、日统计查询的例子.docx
  11. Django中ListView分页技术
  12. oracle 表字段拆分,oracle 字段拆分
  13. OK6410 V4L2 分析
  14. 关于iPhone改变的一切,这也许是史上最详细的盘点
  15. FileNotFoundException(/storage/emulated/0/DCIM/Camera/xx.jpg: open failed: EACCES (Permission denied
  16. 最高效寻找重复数据,如何高效率的查找到数组中的重复值
  17. 重来之大学版|卸负篇——破除光环效应,学长学姐、教授老师真的有这么厉害吗?
  18. VMware的配置及ubuntu10.04 tftp 与嵌入式开发板的连接设置
  19. 【AI TOP 10】扎克伯格要整顿Facebook;LeCun飙脏话批机器人Sophia;北京站加装人脸识别检票机...
  20. python3编译安装_编译安装Python 3

热门文章

  1. html ul超出div,解决ul宽度超出div宽度常用解决办法
  2. 视频教程-AssetBundle框架设计_框架篇视频课程-Unity3D
  3. “基因编辑婴儿”背后到底用了什么术?
  4. 分析占用了大量 CPU 处理时间的是Java 进程中哪个线程
  5. 设计模式 —— 组合模式
  6. javascript 模拟按键事件 触发输入框oninput事件
  7. python:单例设计模式
  8. pythonpath windows_PYTHONPATH 可以跨版本 方便使用 (本文为windows方法)转~
  9. QPainter绘制罗盘
  10. python写安卓游戏辅助软件_python微信跳一跳辅助软件