sftp与ssh端口分离_设置服务器端口监听

sftp与ssh端口分离_设置服务器端口监听sftp,是ssh的功能之一,也就是说是使用SSH协议来传输文件的。OS系统内开启ssh服务和sftp服务都是通过/usr/sbin/sshd这个后台程序监听22端口,而sftp服务作为一个子服务,是通过/etc/ssh/sshd_config配置文件中的Subsystem实现的,如果没有配置Subsystem参数,则系统是不能进行sftp访问的。具体操作(本验证在RedHatLinux7.9上进行):一、复制SSH相关文件,作为sftp的配置文件1、拷贝/usr/lib/systemd/sys

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

sftp,是ssh的功能之一,也就是说是使用SSH协议来传输文件的。
OS系统内开启ssh服务和sftp服务都是通过/usr/sbin/sshd这个后台程序监听22端口,而sftp服务作为一个子服务,是通过/etc/ssh/sshd_config配置文件中的Subsystem实现的,如果没有配置Subsystem参数,则系统是不能进行sftp访问的。
具体操作(本验证在Red Hat Linux7.9上进行):
一、复制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

二、修改复制好的配置文件
1、修改/etc/systemd/system/目录下sftpd.service文件

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/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文件

vi /etc/ssh/sftpd_config

执行 :set number 将行号显示出来后,具体修改如下:

①找到第17行,将
#Port 22
改成
Port 2222

②找到第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      # 指定使用sftp服务使用系统自带的internal-sftp
Match User sftpuser               # 匹配sftp组的用户,若要匹配多个组,可用逗号分开
X11Forwarding no                  # 禁止用户使用端口转发
AllowTcpForwarding no             # 禁止用户使用端口转发
ForceCommand internal-sftp        # 只能用于sftp登录

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 restart sftpd

7、检查是否添加sftpd服务开机自启动

systemctl enable sftpd

三、验证问题解决
验证的时候,发现
sftp root@10.127.1.111
sftp sftpuser@10.127.1.111
也就是默认的22端口依然能够成功连接,解决方法是:
将/etc/ssh/sshd_config文件中的第132行
Subsystem sftp /usr/libexec/openssh/sftp-server
注释掉
#Subsystem sftp /usr/libexec/openssh/sftp-server
然后重启sshd服务

systemctl restart sshd

这样就只有
sftp -P 2222 sftpuser@10.127.1.111
能够连接成功。
原因:sftp服务是通过/etc/ssh/sshd_config配置文件中的Subsystem实现的,注释掉Subsystem参数配置,OS系统就不会通过默认的sftp形式进行访问了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/194015.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • stata–异方差检验

    stata–异方差检验异方差检验有两种方法:1、残差图2、white检验1、残差图(一般不用这个,这个只是粗略)代码:regyfdirvfplot,yline(0)rvpplotfdi,yline(0)(1)对y和fdi回归:(2)画出残差与拟合值(ybar)散点图:(3)画出残差与fdi(自变量x)的散点图:2、white检验:代码:sscinstallwhitetstestatimtest,white…

    2022年10月28日
    0
  • Allure报告开发自定义插件

    Allure报告开发自定义插件allure官网文档 https://docs.qameta.io/allure/alluregithub https://github.com/allure-framework/allure2当报告无法满足当前项目的需求,需要自定义内容来展示在报告中,即需要开发自己的自定义插件最终结果图:demo的结果是新增了一个MyTab目录栏,(demo未做有意义数据和css样式)…

    2022年7月26日
    19
  • 个人嵌入式学习总结

    个人嵌入式学习总结个人认为,嵌入式学习主要经过以下几个阶段,1. 嵌入式linux的移植;主要包括u-boot源码的修改,kernel针对特定硬件平台的修改,系统硬体驱动的移植,根文件系统的制作;2. 系统电路设计;包括根据系统功能选择硬件资源,接口电路的设计;PCB电路图的设计与布线优化。3. linux驱

    2022年5月15日
    39
  • 计算机三级-数据库技术

    计算机三级-数据库技术三级数据库技术知识点总结1数据字典是对系统种各类数据描述的集合,包括数据项,数据结构,数据流,数据存储和处理过程五个部分2数据模型的三要素:数据结构、数据操作和完整性约束3数据库系统:一般由数据库、操作系统、数据库管理系统(及其工具)、应用系统、数据库管理人员和用户构成4数据模型:数据模型是数据库系统的数学形式框架,是数据库系统的核心和基础5数据模型的分类:概念模型,也称信息…

    2022年6月18日
    46
  • JAVA中字符串常量池和缓冲池理解与作用「建议收藏」

    JAVA中字符串常量池和缓冲池理解与作用「建议收藏」字符串池与常量池是完全不同的两个东西,但是很多地方都喜欢把它们混为一谈,很容易让初学者产生误解,在这里我想好好讨论一下它们。字符串池也可以被称为字符串常量池,我认为这个名称就是产生误解的根源,有些人说着说着就把字符串三个字省略了,只剩下了常量池…所以为了避免误解,我建议在指代字符串对象的缓存池的时候,就直接称之为字符串池1常量池常量池分为两个类型,一是.class文件中静态的常量池,二是.class文件中的静态常量池被加载到JVM中而形成的运行时常量池。1.1静态常量池.cla

    2022年7月28日
    3
  • 【编程语言】CentOS 7 下pip更新命令

    【编程语言】CentOS 7 下pip更新命令CentOS7下pip更新命令CentOS7需要更新pip时,只需要一下简单的命令即可搞定:pipinstall–upgradepip

    2022年6月6日
    173

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号