linux 配置 SFTP
参考资料
https://blog.csdn.net/yanzhenjie1003/article/details/70184221 转自严振杰的博客
https://www.cnblogs.com/whatmiss/p/7068772.html
1.安装ssh和openssh-sftp-server
2.建立用户组和用户
- 建立一个名为sftp-users的sftp用户组
sudo groupadd sftp-users
- 在该组建立几个需要登录sftp的用户
# 新建用户名为admin的用户:
sudo useradd -g sftp-users -m admin
# 修改admin的密码:
passwd admin
# 如果该用户已存在,但是不在sftp-users组中,可以移动用户到改组
usermod –g sftp_users admin
3.配置ssh和权限
- 打开
/etc/ssh/sshd_config
文件,修改或添加如下两条
AllowTcpForwarding = no
X11Forwarding = no
- 修改Subsystem sftp为internal-sftp
Subsystem sftp /usr/libexec/openssh/sftp-server
# 或者
Subsystem sftp /usr/lib/openssh/sftp-server
修改为:
Subsystem sftp internal-sftp
- 为什么用 internal-sftp 而不用默认的 sftp-server,这是因为:
- 这是一个进程内的 sftp 服务,当用户 ChrootDirectory 的时候,将不请求任何文件;
- 更好的性能,不用为 sftp 再开一个进程。
3.在文件末尾增加内容
Match Group sftp-users
ChrootDirectory %h
ForceCommand internal-sftp
- Match Group sftp-users这一行是指定以下的子行配置是匹配sftp-users用户组的,多个用户组用英文逗号分隔。
- ChrootDirectory %h该行指定Match Group行指定的用户组验证后用于chroot环境的路径,也就是默认的用户目录,比如/home/admin;也可以写明确路径,例如/data/www。
- ForceCommand internal-sftp该行强制执行内部sftp,并忽略任何~/.ssh/rc文件中的命令。
4.修改sftp-users用户组用户目录权限
- 修改权限为root用户拥有
chown root /home/admin
- 修改权限为root可读写执行,其它用户可读
chmod 755 /home/admin
- 重启ssh,登录sftp
# Ubuntu 重启ssh
sudo service ssh restart
# CentOS 重启ssh
sudo systemctl restart sshd.service
# CentOS 设置开机启动
sudo systemctl enable sshd.service
- 在用户目录下建立子upload目录,让sftp-users中的用户可读写文件
cd /home/admin/
mkdir upload
- 授权upload文件夹读写
- 让子文件夹upload属于admin
chown admin /home/admin/upload
- 让子文件夹upload被admin读写
chmod 755 /home/admin/upload
- 重启ssh,登录sftp