linux 配置 SFTP

作者: forestpeak | 来源:发表于2019-03-25 23:03 被阅读32次

linux 配置 SFTP

参考资料
https://blog.csdn.net/yanzhenjie1003/article/details/70184221 转自严振杰的博客
https://www.cnblogs.com/whatmiss/p/7068772.html

1.安装ssh和openssh-sftp-server

2.建立用户组和用户

  1. 建立一个名为sftp-users的sftp用户组
sudo groupadd sftp-users
  1. 在该组建立几个需要登录sftp的用户
# 新建用户名为admin的用户:
sudo useradd -g sftp-users -m admin
# 修改admin的密码:
passwd admin
# 如果该用户已存在,但是不在sftp-users组中,可以移动用户到改组
usermod –g sftp_users admin

3.配置ssh和权限

  1. 打开/etc/ssh/sshd_config文件,修改或添加如下两条
AllowTcpForwarding = no
X11Forwarding = no
  1. 修改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用户组用户目录权限

  1. 修改权限为root用户拥有
chown root /home/admin
  1. 修改权限为root可读写执行,其它用户可读
chmod 755 /home/admin
  1. 重启ssh,登录sftp
# Ubuntu 重启ssh
sudo service ssh restart
# CentOS 重启ssh
sudo systemctl restart sshd.service
# CentOS 设置开机启动
sudo systemctl enable sshd.service
  1. 在用户目录下建立子upload目录,让sftp-users中的用户可读写文件
cd /home/admin/
mkdir upload
  1. 授权upload文件夹读写
  • 让子文件夹upload属于admin
chown admin /home/admin/upload
  • 让子文件夹upload被admin读写
chmod 755 /home/admin/upload
  1. 重启ssh,登录sftp

相关文章

网友评论

    本文标题:linux 配置 SFTP

    本文链接:https://www.haomeiwen.com/subject/yrbivqtx.html