ssh -V
groupadd sftp
useradd -g sftp -s /sbin/nologin silent
mkdir -p /data/sftp/silent
# 指定用户 silent 的 home 为 /data/sftp/silent
usermod -d /data/sftp/silent silent
vi /etc/ssh/sshd_config
找到如下这行,用#符号注释掉,大致在文件末尾处。
Subsystem sftp /usr/libexec/openssh/sftp-server
在文件最后面添加如下几行内容,然后保存。
Subsystem sftp internal-sftp
Match Group sftp
# 用chroot将用户的根目录指定到%h,%h代表用户home目录,这样用户 就只能在用户目录下活动。也可用%u,%u代表用户名
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
chown root:sftp /data/sftp/silent
chmod 755 /data/sftp/silent
照上面设置后,在重启 sshd 服务后,用户 sftp1 已经可以登录(只能使用 sftp 登录,使用 ssh 登录不了)。但使用 chroot 指定根目录后,根应该是无法写入的,所以要新建一个目录供 sftp1 上传文件。这个目录所有者为 sftp1 ,所有组为sftp,所有者有写入权限,而所有组无写入权限。命令如下:
mkdir /data/sftp/silent/upload
chown silent:sftp /data/sftp/silent/upload
chmod 755 /data/sftp/silent/upload
vi /etc/selinux/config
将文件中的SELINUX=enforcing 修改为 SELINUX=disabled ,然后保存。 在输入命令
setenforce 0
service sshd restart
sftp silent@127.0.0.1