如何在linux下配置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  <username>将其加入到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  <username>),使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

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答