SFTP服务搭建与配置
2024-11-27 03:04:35 阅读次数:2
server
一、概述
1、简介
sftp是Secure FileTransferProtocol的缩写,安全文件传送协议,可以为传输文件提供一种安全的加密方法。
(1)SFTP 与 FTP 有着几乎一样的语法和功能
(2)SFTP 为 SSH的一部分,是一种传输文件至服务器的安全方式
(3)SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作
(4)SFTP安全性非常高
(5)SSH软件已经包含SFTP安全文件传输子系统
2、sftp与ftp区别
sftp和ftp是两种不同的文件传输协议,sftp是基于ssh协议的加密ftp传输协议,是作为SSH2的一个子服务工作的,
只要sshd服务器启动了它就可用。vsftpd是一款ftp服务器,支持ftp协议,不支持sftp协议。
3、作用
基于对线上服务器的保密和安全,不希望开发人员直接登录线上服务器,因为登录服务器的权限太多难以管控,
如直接修改代码、系统配置等,希望能限制开发人员ssh登录机器,但是通过ftp/sftp上传代码文件。
二、使用
1、关闭与开启
1、开启
只要ssh服务正常使用,sftp就可以使用
2、关闭
/etc/ssh/sshd_config
#Subsystem sftp /usr/lib/ssh/sftp-server #将这行注释掉,可能sftp-server的路径不同系统有所不同
2、sftp-server常用操作
默认就是开启sftp-server
登录命令
sftp -P 22 sftpuser@192.168.10.131
这样子上传的文件默认在sftpuser的家目录下面
参数查看
man sftp-server
3、internal-sftp常用操作
关于sftp-server和internal-sftp的区别可以看附录
开启配置参数:
将配置放在UsePAM参数下面
(PAM 代表可插入身份验证模块(Pluggable Authentication Modules)。这些模块提供额外的身份验证规则,保护对计算机的访问。)
#将sftp-server给注释掉
#Subsystem sftp /usr/lib/ssh/sftp-server
#指定sftp服务使用系统自带的internal-sftp,不添加,用户无法通过sftp登录
Subsystem sftp internal-sftp
#限制只有sftpuser用户可登录sftp,如果设置了AllowUsers,也必须有sftpuser才行
#并且sftpuser用户失去了使用ssh登录的权限,只能通过sftp登录
#Match User user1,user2,user3,user4 #可以设置多个用户,之间以逗号分隔
#Match User !root #使用叹号取非过滤
Match User sftpuser
##限制只有sftpgroup用户组可以登录sftp
Match Group sftpgroup
#设置并限制sftp用户访问的根目录为/data
#ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;
#ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最大设置只能是755。
需要在/data下面提前创建好属主为sftp用户的目录
ChrootDirectory /data
#强制执行这里指定的命令,而忽略客户端执行的任何命令
ForceCommand internal-sftp -l INFO -f AUTH
#是否允许进行 X11 转发
X11Forwarding no
#是否允许TCP转发
AllowTcpForwarding no
常用配置:
#Subsystem sftp /usr/lib/ssh/sftp-server
Subsystem sftp internal-sftp
Match User sftpuser
Match Group sftpgroup
sftp-server options can be specified with the "internal-sftp" command by separating the options with blank spaces
internal-sftp的参数可以使用sftp-server的参数
4、日志配置
1、修改ssh的配置
vi /etc/ssh/sshd_config
找到Subsystem开头的如下配置"-l INFO -f local5"
不同操作系统略有不同
例如:
Subsystem sftp /usr/lib/ssh/sftp-server
改成:
Subsystem sftp /usr/lib/ssh/sftp-server -l INFO -f local5
这个参数也改一下:
LogLevel INFO
2、修改rsyslog配置
vi /etc/rsyslog.conf
在最后增加如下配置
auth,authpriv.*,local5.* /var/log/sftp.log
3、重启服务
service rsyslog restart
service sshd restart
4、查看日志
tail -f /var/log/sftp.log
就可以查看sftp连接对本主机做了啥操作
internal-sftp配置和上面一样
ForceCommand internal-sftp -l INFO -f local5
5、文件权限控制
1、sftp-server
如果想控制上传到131的文件权限
在131机器sshd_config配置
a、基于PAM
/etc/ssh/sshd_config
UsePAM yes
/etc/pam.d/sshd
session optional pam_umask.so umask=0027
b、基于umask
Subsystem sftp /usr/lib/ssh/sftp-server -u 0027
上传到131的文件权限就是640
c、基于文件权限
Subsystem sftp /usr/lib/ssh/sftp-server -m 660
上传到131的文件权限就是660
如果同时设置了-u和-m,-u参数会失效
2、internal-sftp
操作几乎一致
ForceCommand internal-sftp -l INFO -f AUTH -u 0027
ForceCommand internal-sftp -l INFO -f AUTH -m 660
三、附录:sftp-server和internal-sftp的区别
sftp-server和internal-sftp都是OpenSSH的一部分。
sftp-server是一个独立的二进制文件, internal-sftp只是一个配置关键字,告诉sshd使用内置sshd的SFTP服务器代码,而不是运行另一个进程(通常是sftp-server)。
从功能的角度来看,sftp-server和internal-sftp几乎完全相同。 它们是使用相同的源代码构建的。
internal-sftp的主要优点是,当与ChrootDirectory指令一起使用时,它不需要任何支持文件。
sshd_config(5)手册页:
对于Subsystem指令:
指定sftp-server实现SFTP文件传输子系统或者internal-sftp实现进程内SFTP服务,这可以简化使用ChrootDirectory强制配置以在客户端上强制使用不同的文件系统root的配置。
对于ForceCommand指令:
指定internal-sftp命令将强制使用与ChrootDirectory一起使用时不需要支持文件的进程内SFTP服务。
对于ChrootDirectory指令:
ChrootDirectory必须包含支持用户会话所需的文件和目录。对于交互式会话,这至少需要一个shell(通常是sh)和基本/ dev节点,例如
null,zero,stdin,stdout,stderr和tty设备。对于使用SFTP的文件传输会话,如果使用进程内sftp服务器,则无需对环境进行其他配置,但使用日志记录的会话可能需要在某些操作系统上的chroot目录中使用/dev /log(请参阅sftp-server以获取细节)。
internal-sftp的另一个优点是性能,因为没有必要为它运行新的子进程。
internal-sftp在很晚的时候被添加(2008年的OpenSSH 4.9p1?),而不是独立的sftp-server二进制文件,但它现在是默认的,我相信没有理由将sftp-server用于新安装。
sshd在遇到sftp-server时可以自动使用internal-sftp,因为功能相同而且internal-sftp甚至具有上述优点,但是在一些情况下,存在差异。
几个例子:
1.管理员可能依赖登录shell配置来阻止某些用户登录。切换到internal-sftp会绕过限制,因为不再涉及登录shell。
2.使用sftp-server二进制文件(作为一个独立的进程),你可以使用一些hacks,比如在sudo下运行SFTP。
3.对于SSH-1(如果有人仍在使用它),则根本不涉及Subsystem指令,使用SSH-1的SFTP客户端明确告知服务器,服务器应运行什么二进制文件。 因此,传统的SSH-1 SFTP客户端具有硬编码的sftp服务器名称。
版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/u_13236892/5608739,作者:哭泣的馒头,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。
上一篇:系统架构设计师 - 模拟题 - 论文题(三)
下一篇:Nginx上游服务器长连接配置