SSH和SFTP端口服务分离

一、为什么要进行分离

SFTP是安全文件传输协议本身没有守护进程,包含在SSH中,端口也默认为22号端口。
实现SFTP与SSH服务分开,增强安全性和管理性,只允许指定用户SFTP通过指定端口传输文件,而没有SSH权限。

二、配置SFTP服务

1.相关配置文件分离
#复制ssh服务相关文件给sftp一份
[root@node1 ~]#  cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/sftpd.service
[root@node1 ~]#  cp /etc/pam.d/sshd /etc/pam.d/sftpd
[root@node1 ~]#  cp /etc/ssh/sshd_config /etc/ssh/sftpd_config
[root@node1 ~]#  cp /etc/sysconfig/sshd /etc/sysconfig/sftp
[root@node1 ~]#  cp /var/run/sshd.pid /var/run/sftpd.pid

#相关命令做软连接给sftp使用
[root@node1 ~]#  ln -sf /usr/sbin/service /usr/sbin/rcsftpd
[root@node1 ~]#  ln -sf /usr/sbin/sshd /usr/sbin/sftpd
2.配置SFTP服务

2.1 修改service文件,加入systemd进行管理

[root@node1 ~]# cat /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
#修改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.2修改sftp配置文件

#在文件原有的基础上修改
[root@node1 ~]# vim /etc/ssh/sftpd_config
#修改服务端口
Port 16022

#是否禁止root通过ssh登录,不禁止
PermitRootLogin no

#是否开启密码认证,开启
PasswordAuthentication yes

#开启PAM身份验证模块验证
UsePAM yes

#关闭
X11Forwarding no
UseDNS no

#修改存储sftp服务pid文件
PidFile /var/run/sftpd.pid

#使用sftp
Subsystem   sftp    internal-sftp

#指定用户登录
Match User sftpuser

#禁止tcp转发
AllowTcpForwarding no

#只接受sftp连接
ForceCommand internal-sftp

2.3 清空/var/run/sftpd.pid文件内容

[root@node1 ~]# >/var/run/sftpd.pid

2.4 创建sftp专用用户

#创建用户,禁止bash
[root@node1 ~]# useradd sftpuser -s /bin/false sftpuser

2.5 启动sftp服务

[root@node1 ~]# systemctl start sftpd.service
[root@node1 ~]# systemctl enable sftpd.service
3.取消22端口的sftp功能

3.1 修改配置文件

#注释掉这一行
[root@node1 ~]# vim /etc/ssh/sshd_config 
#Subsystem  sftp    /usr/libexec/openssh/sftp-server

3.2 重启ssh服务

[root@node1 ~]# systemctl restart sshd
4.测试sftp服务
[root@work1 ~]# sftp -P 16022 sftpuser@10.0.0.102
sftpuser@10.0.0.102's password: 
Connected to 10.0.0.102.
sftp> put /root/file ./
Uploading /root/file to /home/sftpuser/./file
/root/file                                                 100%    0     0.0KB/s   00:00    
sftp> ls
file
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容