携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情
sftp 是 Secure File Transfer Protocol 的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。SFTP 为 SSH 的一部分,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的 FTP 要低得多,如果您对网络安全性要求更高时,可以使用 SFTP 代替 FTP。
1.sftp搭建
1.1.创建sftp组,sftp用户,所属家里面
groupadd sftp mkdir -p /data/sftp/ useradd -g sftp -d /data/sftp/ -s /sbin/nologin sftpuser #-g:用户组 -d:家目录 -s:不登录 -M:不创建家目
1.2.修改sshd_config配置文件
vim /etc/sshd/sshd_config #注释下面一行 Subsystem sftp /usr/libexec/openssh.sftp-server #添加这几行 Subsystem sftp internal-sftp Match Group sfpt ChroottDirectory %h ForceCommand internal-sftp UsePAM yes ------默认有
1.3.启动sshd
systemctl restart sshd service sshd restart
\
下面两项是与安全有关的
A11owTcpForwarding no
X11Forwarding no
Match Group sftp 这一行是指定以下的子行配置是匹配 sftp 用户组的。Match user userA,userB 则是匹配用户。 ChrootDirectory /data/sftp/%u 设定属于用户组 sftp 的用户访问的根文件夹。%h 代表用户 home 目录,%u 代表用户名。 ForceCommand internal-sftp 该行强制执行内部 sftp,并忽略任何 ~/.ssh/rc 文件中的命令。 AllowTcpForwarding no 是否允许 TCP 转发,默认值为 "yes", 禁止 TCP 转发并不能增强安全性,除非禁止了用户对 shell 的访问,因为用户 可以安装他们自己的转发器。 X11Forwarding no 是否允许进行 X11 转发。默认值是 "no",设为 "yes" 表示允许。如果允许 X11 转发并且 sshd(8)代理的显示区被配置为在 含有通配符的地址(X11UseLocalhost)上监听。那么将可能有额外的信息被泄漏。由于使用 X11 转发的可能带来的风险,此指令默认值为"no"。需要 注意的是,禁止 X11 转发并不能禁止用户转发 X11 通信,因为用户可以安装他们自己的转发器。
\
权限设置
要实现 Chroot 功能, 目录权限的设置非常重要 。否则无法登录,给出的错误提示也让人摸不着头脑,无从查起。我在这上面浪费了很多时间。 ChrootDirectory:定义了用户通过认证以后的 chroot 目录,此目录及其所有子目录的属主必须是 root,且这些目录只有 root 帐号可以进行 写操作,其他任何组和帐号都不可写。chroot 以后,sshd 会将用户的工作目录转到 chroot 目录中用户自己的主目录。如果 ChrootDirectory 定义的目录下没有相应的 /home/username 目录,则会直接转到 chroot 的 / 目录下。
\
chown root:root /data/sftp chmod 755 /data chmod 755 /data/sftp
\
查看一下
\
目录权限设置上要遵循2点:
ChrootDirectory 设置的目录权限及其所有的上级文件夹权限,属主和属组必须是 root; ChrootDirectory 设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,权限最大设置只能是 755。
\
1.4建立SFTP用户可写目录
由于 /data/sftp/sftpuser 的用户是 root,其它用户都没有写的权限,所有要有该目录下新建一个目录用于文件的上传下载。
mkdir -p /data/sftp/upload chown sftpuser:sftp /data/sftp/upload chmod 755 /data/sftp/upload #也可以再家目录的下一级创建目录,设置acl权限 setfacl -m u:用户:权限 目录
\
\