1、创建SFTP 服务配置文件
1.1将sshd_config 文件复制一份,作为SFTP 服务的配置文件。
cp /etc/ssh/sshd_config /etc/ssh/sftpd_config
1.2编辑/etc/ssh/sftpd_config文件
vi /etc/ssh/sftpd_config
1.3找到port 改成10022
Port 10022
1.4找到PidFile 改成如下
PidFile /var/run/sftpd.pid
2、创建服务启动文件
2.1将SSH 服务对应的systemd unit 文件复制一份,用于SFTP 服务
cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/sftpd.service
2.2编辑sftpd.service 文件
vi /etc/systemd/system/sftpd.service
2.3将Description 修改为如下:
Description=SFTP server daemon
2.4将After修改为如下:
After=syslog.target network.target auditd.service sshd.service
2.5将ExecStart修改为如下
ExecStart=/usr/sbin/sshd -D -f /etc/ssh/sftpd_config $OPTIONS
3、在SSH 服务配置文件中禁用sftp
### 3.1修改/etc/ssh/sshd_config
vi /etc/ssh/sshd_config
## 3.2 将sftp 功能对应的配置行注释,禁用sftp 功能,注释下面一行
#Subsystem sftp /usr/libexec/openssh/sftp-server
4、限制允许访问SFTP 服务的用户范围
## 4.1修改/etc/ssh/sftpd_config,
vi /etc/ssh/sftpd_config
## 4.2将原有sftp 功能对应的配置行注释,并在其下增加新的配置,限制仅允许用户组sftponly 中的用户才可访问SFTP 服务。
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp -l INFO -f AUTH
AllowGroups sftponly
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp -l INFO
5、重启SSH 和SFTP 服务
systemctl restart sshd
systemctl restart sftpd
##注: RHEL6.X 需使用service sshd restart命令。
6、查看端口启动情况,确认10022已开启
netstat -anpt|grep LISTEN
6.1、重新装载配置文件
service sshd reload
6.2、日志配置
cp /etc/rsyslog.conf /etc/rsyslog.conf.bk
vim /etc/rsyslog.conf
#新增以下配置:
auth,authpriv.* /var/log/sftp.log
6.3、重启rsyslog 服务:
service rsyslog restart
#服务启动后,日志生成在: /var/log/sftp.log
7、创建sftp专用用户组
7.1、看一下生产的服务器上是否有这个属组,如果有可以不写
groupadd sftponly
7.2、创建sftp专用用户,禁止使用shell功能
useradd sftpuser -g sftponly -s /bin/false
7.3、设置sftp用户密码#用户密码是双引号里面的,可修改
#如果命令黑名单则
passwd sftpuser
#首次输入密码
123
#确认密码
123
7.4、进入sftp用户家目录
cd /home/sftpuser/
7.5、删除ssh登录文件
rm -f .b*
7.6、创建sftp工作目录
mkdir /home/sftpuser/sftpwork #可更改路径
7.7、修改sftp工作目录属组
chown sftpuser:sftponly /home/sftpuser/sftpwork
7.8、修改sftp工作目录权限
chmod 755 /home/sftpuser
chmod 755 /home/sftpuser/sftpwork/
7.9、修改sftp用户家目录用户
chown root:sftponly /home/sftpuser
8、如果要修改家目录
sftp的工作目录上级目录必须是root,且权限不能是777
mkdir -p /intf/sftpdir/sftpwork/
cd /etc/ssh
vim sftpd_config
#将ChrootDirectory %h 注释掉
#ChrootDirectory %h
#并在下面添加
ChrootDirectory /intf/sftpdir
cd /etc/ssh
systemctl restart sftpd
#查看端口
netstat -anpt | grep LISTEN | grep 10022
#赋权
chown root:sftponly /intf/sftpdir
chmod 755 /intf
chmod 755 /intf/sftpdir
chmod 755 /intf/sftpdir/sftpwork
chown sftpuser:sftponly /intf/sftpdir/sftpwork