ssh和sftp服务分离

ssh和sftp服务分离

原理
创建两个‘sshd’进程,一个作为ssh服务的deamon,一个作为sftp服务的deamon.
ssh服务和sftp服务分离之前:
系统内开启ssh服务和sftp服务都是通过/usr/sbin/sshd这个后台程序监听22端口,而sftp服务作为一个子服务,是通过/etc/ssh/sshd_config配置文件中的Subsystem实现的,如果没有配置Subsystem参数,则系统是不能sftp访问的。

1.两个deamon

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

#要实现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

cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/sftpd.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.其他需要分离的文件

#1.拷贝/etc/pam.d/目录下的sshd文件,放到同目录,命名为:sftpd
cp /etc/pam.d/sshd /etc/pam.d/sftpd
#2.拷贝/etc/ssh/目录下的sshd_config文件,放到同目录,命名为:sftpd_config
cp /etc/ssh/sshd_config /etc/ssh/sftpd_config
#3.对service和rcsftpd进行软连接
ln -sf /usr/sbin/service /usr/sbin/rcsftpd
#4.拷贝/etc/sysconfig/目录下的sshd文件,放到同目录,命名为:sftp
cp /etc/sysconfig/sshd /etc/sysconfig/sftp
#5.拷贝/var/run/目录下的sshd.pid文件,放到同目录,命名为:sftpd.pid
cp /var/run/sshd.pid /var/run/sftpd.pid

4.总结实现ssh和sftp分离的相关文件及操作

ln -sf /usr/sbin/sshd /usr/sbin/sftpd
cp /usr/lib/systemd/system/sshd.service  /etc/systemd/system/sftpd.service
cp /etc/pam.d/sshd  /etc/pam.d/sftpd
cp /etc/ssh/sshd_config  /etc/ssh/sftpd_config
ln -sf  /usr/sbin/service  /usr/sbin/rcsftpd
cp /etc/sysconfig/sshd  /etc/sysconfig/sftp
cp /var/run/sshd.pid  /var/run/sftpd.pid
#至此,我们已经实现了两个服务分离。
#但是,ssh服务和sftp服务并没有真正的分离,此时已然可以通过22号端口使用ssh服务和sftp服务,而新开的20022端口也可以使用ssh服务(ssh -p 20022 username@serverip )和sftp服务(sftp -o Port=20022 username@serverip )。编辑/usr/sbin/sshd的配置文件/etc/ssh/sshd_config文件,将Subsystem参数注释掉,然后重启sshd

5.修改复制好的配置文件

5.1修改/etc/systemd/system/目录下sftpd.service文件

vim /etc/systemd/system/sftpd.service

Description=sftpd server daemon
Type=notify
EnvironmentFile=/etc/sysconfig/sftp
ExecStart=/usr/sbin/sftpd -f /etc/ssh/sftpd_config

5.2修改/etc/ssh/目录下的sftpd_config文件
vim /etc/ssh/sftpd_config
①找到第17行,将
Port 22改成Port 10202(随意端口)

②找到第38行,将
#Perm	itRootLogin 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 internal-sftp
ChrootDirectory /qwjk/upload/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

Match User qwjk_system
        ChrootDirectory /qwjk
        X11Forwarding no
        AllowTcpForwarding no

5.3清空/var/run/目录下的sftpd.pid文件内容

/var/run/sftpd.pid(将内容删掉)

6.添加sftp的专用账户

useradd  -s  /bin/false xxx或 useradd -s /sbin/nologin xxx

7.重启sftpd服务

systemctl daemon-reload
systemctl start sftpd
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
为了将SSHSFTP服务分离,你可以按照以下步骤操作。 首先,找到你的SSH配置文件,通常在/etc/ssh/sshd_config。在这个文件中,你可以找到一个称为Subsystem的行,它指定了使用哪个程序来处理SFTP连接。在第132行,你会找到类似于"Subsystem sftp /usr/libexec/openssh/sftp-server"的内容。 接下来,你需要通过编辑SSHD配置文件来进行设置。通过使用编辑器打开你的SSHD配置文件,找到并修改"Subsystem sftp"行。将其修改为"Subsystem sftp internal-sftp"。这将使SSHD守护进程内部处理SFTP连接,而不是使用单独的sftp-server守护进程。保存并关闭文件。 最后,在修改完SSHD配置文件后,你需要重新加载SSH配置。你可以通过运行"systemctl reload sshd"命令来重新加载。这将使你的更改生效并将SSHSFTP服务分离。 这样,你就成功地将SSHSFTP服务分离了。现在,SSH将继续处理SSH连接,而SSHD守护进程将内部处理SFTP连接。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SSHSFTP服务分离](https://blog.csdn.net/xx244/article/details/124709735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值