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

你可能感兴趣的:(SFTP,ssh,ssh,sftp端口分离,sftp)