一、安装配置 sftp
1. 查看openssh版本
ssh -V
openssh版本必须大于4.8p1
2. 创建sftp组
groupadd sftp
3. 创建sftp用户
useradd -g sftp -s /sbin/nologin -M sftp
passwd sftp
输入密码
4. 建立目录
mkdir -p /data/sftp/mysftp
usermod -d /data/sftp/mysftp sftp
5. 修改sshd_config
vim /etc/ssh/sshd_config
注释掉
# Subsystem sftp /usr/libexec/openssh/sftp-server
添加
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /data/sftp/mysftp
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
上面目录里可以使用 %u
表示登陆的用户名。
6. 设置Chroot目录权限
chown root:sftp /data/sftp/mysftp
chmod 755 /data/sftp/mysftp
以上完成后,就可以登陆查看了。
7. 设置可以写入的目录
mkdir /data/sftp/mysftp/upload
chown sftp:sftp /data/sftp/mysftp/upload
chmod 755 /data/sftp/mysftp/upload
关闭selinux:
vim /etc/selinux/config
将文件中的SELINUX=enforcing 修改为 SELINUX=disabled ,然后保存。
执行:
setenforce 0
service sshd restart
或
systemctl restart sshd.service
测试
sftp sftp@127.0.0.1
二、用户sftp 日志
1. 修改ssh的配置
vi /etc/ssh/sshd_config
Subsystem sftp /usr/libexec/openssh/sftp-server -l INFO -f local5
LogLevel INFO
如果设置 Subsystem sftp internal-sftp
则可以这样写:
Subsystem sftp internal-sftp -l INFO -f local5
另一行LogLevel INFO
不限定在哪一行。
2. 修改rsyslog配置
vi /etc/rsyslog.conf
在最后增加如下配置
auth,authpriv.*,local5.* /var/log/sftp.log
3. 重启服务
service rsyslog restart
service sshd restart
4. 查看日志
tail -f /var/log/sftp.log