sshd自带的sftp
sftp配置参考 https://www.cnblogs.com/flyback/p/6492059.html
sftp服务限制用户登录家目录 - 乐晨的个人空间 - OSCHINA - 中文开源技术交流社区
Sftp搭建与配置参考
1. 介绍
sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。
2. sftp搭建
2.1查看openssl的版本
ssh -V
###使用ssh –V命令来查看openssh的版本,版本必须大于4.8p1,低于这个版本需要升级。
2.2创建sftp组
groupadd sftp
2.3创建一个sftp用户,用户名为mysftp,密码为mysftp
useradd -g sftp -M -s /bin/false myftp //该用户不能通过sshd登陆到系统
/bin/false是最严格的禁止login选项,一切服务都不能用, /sbin/nologin只是不允许系统login,可以使用其他ftp等服务 ,-M不允许建家目录
passwd mysftp #设置密码
2.3sftp组的用户的home目录统一指定到/data/sftp下,按用户名区分,这里先新建一个mysftp目录,然后指定mysftp的home为/data/sftp/mysftp
mkdir -p /data/sftp/mysftp usermod -d /data/sftp/mysftp mysftp #指定家目录
2.4配置sshd_config
文本编辑器打开 /etc/ssh/sshd_config
vi /etc/ssh/sshd_config
[root@honor-cosmic ssh]# vim /etc/ssh/sshd_config Subsystem sftp internal-sftp Match Group sftp ChrootDirectory /kingdee/jenkins/share ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no

找到如下这行,用#符号注释掉。 # Subsystem sftp /usr/libexec/openssh/sftp-server 在文件最后面添加如下几行内容,然后保存。 Subsystem sftp internal-sftp ###配置一个外部子系统(例如,一个文件传输守护进程)。仅用于SSH-2协议。值是一个子系###统的名字和对应的命令行(含选项和参数)。比如"sftp /usr/libexec/openssh/sftp-server"。,###这里配置为内部的 Match Group sftp #限定只有sftp组的才能访问 ChrootDirectory /data/sftp/%u ###设定属于用户组sftp的用户访问的根文件夹 ForceCommand internal-sftp ###强制执行这里指定的命令而忽略客户端提供的任何命令。这个命令将使用用户的登录###shell执行(shell -c)。这可以应用于 shell 、命令、子系统的完成,通常用于 Match 块中。###这个命令最初是在客户端通过 SSH_ORIGINAL_COMMAND 环境变量来支持的。 AllowTcpForwarding no ###是否允许TCP转发,默认值为"yes", 禁止TCP转发并不能增强安全性,除非禁止了用户###对shell的访问,因为用户可以安装他们自己的转发器。 X11Forwarding no ###是否允许进行 X11 转发。默认值是"no",设为"yes"表示允许。如果允许X11转发并且sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为"no"。需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。 如果启用了 UseLogin ,那么X11转发将被自动禁止。
2.5设定Chroot目录权限
chown root:sftp /data/sftp/mysftp chmod 755 /data/sftp/mysftp
2.6建立SFTP用户登入后可写入的目录
照上面设置后,在重启sshd服务后,用户mysftp已经可以登录。但使用chroot指定根目录后,根应该是无法写入的,所以要新建一个目录供mysftp上传文件。这个目录所有者为mysftp,所有组为sftp,所有者有写入权限,而所有组无写入权限。命令如下:
mkdir /data/sftp/mysftp/upload chown mysftp:sftp /data/sftp/mysftp/upload chmod 755 /data/sftp/mysftp/upload
2.7重启sshd服务
service sshd restart
3.附录
3.1sftp参考资料
http://blog.csdn.net/xinxin19881112/article/details/46831311
http://www.2cto.com/os/201401/272738.html
http://www.1949idc.com/shownews399.html
3.2 UNIX文件权限详解参考资料
http://blog.csdn.net/astonqa/article/details/8292935###UNIX文件权限详解(尤其是SUID和SGID)参照
3.3setfacl参考资料
http://cn.linux.vbird.org/linux_basic/0410accountmanager_3.php ###鸟哥的讲解非常详细
http://man.linuxde.net/setfacl
http://blog.csdn.net/qwq_qaq/article/details/54882203
打开sftp的日志 [root@honor-cosmic ssh]# vim /etc/ssh/sshd_config Subsystem sftp internal-sftp -l INFO -f local5 #开启日志 LogLevel INFO #等级 Match Group sftp ChrootDirectory /kingdee/jenkins/share ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no [root@honor-cosmic ssh]# vim /etc/rsyslog.conf 最后加一行 auth,authpriv.*,local5.* /var/log/sftp.log [root@honor-cosmic ssh]# systemctl restart rsyslog.service
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步