能够完成sftp服务的部署,且实现ssh和sftp的端口分离,不使用默认的端口,sftp用户的权限只可以访问该用户的家目录里的文件和其下的子目录,实现权限控制。
SFTP是SSH的一部分,SFTP没有单独的守护进程,它必须使用SSHD守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像是一个服务器程序,而更像是一个客户端程序。
1.1、systemctl status sshd
1.2、systemctl status sftpd
系统内开启ssh服务和sftp服务都是通过/usr/sbin/sshd这个后台程序监听22端口,而sftp服务作为一个子服务,是通过/etc/ssh/sshd_config配置文件中的Subsystem实现的,如果没有配置Subsystem参数,则系统是不能进行sftp访问的
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
vim /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
下面标红的需要执行,标绿的可不执行,看自己是否需要单独设置允许root登录和其他用户怎么管理而定
①找到第17行,将
Port 22
改成
Port 20022
②找到第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
Match User sftpuser ChrootDirectory /home/sftpuser/ ##此配置是指定sftp用户的家目录,可访问的目录
drwxr-xr-x. 4 root root 4096 Aug 9 15:16 home
drwxr-xr-x 3 root root 4096 Aug 9 16:38 sftpuser
drwxrwxrwx 3 sftpuser sftpuser 4096 Aug 9 19:42 csm
ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no
就是注释132行,并将132行下面,添加5行内容。
说明: 如果后续不想让用户通过22好端口登录服务,可修改、etc/ssh/sshd_config文件,注释掉 #Subsystem sftp /usr/libexec/openssh/sftp-server 然后重启ssh服务
能够完成sftp服务的搭建并实现端口分离,可以随意自定义端口
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。