SFTP文件传输
前言一,适用场景 我们平时习惯了使用FTP来上传下载文件,尤其是很多Linux的环境下,我们一般都会通过第三方的SSH工具连接到Linux的,但是当我们需要传输文件到Linux的服务器当中,很多人习惯用FTP来传输,其实Linux的默认是不提供FTP的,需要你额外安装FTP服务器。而且FTP服务器端会占用一定的VPS服务器资源。其实笔者更建议使用SFTP代替FTP。主要因为:一,可以不...
前言
虽然近几年,由于对安全性的重视,文件的上传、下载有了其他的替代方式,使用FTP的人员逐渐减少。但是仍有部分人员习惯使用FTP来上传和下载文件,下面介绍一下类似的工具SFTP的配置和使用。
为什么讲这个?因为近期有人提了个上传的小需求 。。
SFTP与FTP区别
FTP是一种文件传输协议,用来在计算机间传输文件
传输速度相对快,支持范围广
客户端传输文件时,无需再安装客户端,也可通过第三方工具连接
向服务器传输文件时,服务端要先安装配置ftp
SFTP是一种使用方式类似于FTP的更安全的文件传输协议,传输文件进行了加密,更加安全
由于加密传输,传输时相对FTP较慢
客户端传输文件时,可通过第三方工具连接
SFTP是SSH的一部分,无需额外配置,端口使用的是ssh端口
常用的几种配置
【1】某用户ssh和sftp都可登录
默认配置下,当创建了一个用户并配置密码后,该用户即可通过ssh和sftp登录
<1>创建用户并设置密码
useradd tom -d /data/tom/
passwd tom
<2>重点配置
cat /etc/ssh/sshd_config
Subsystem sftp /usr/libexec/openssh/sftp-server
#上方Subsystem sftp用于开启sftp
#当Subsystem sftp的配置被注释时,用户仅能ssh登录,使用sftp会报如下错误
#subsystem request failed on channel 0
#Couldn't read packet: Connection reset by peer
【2】用户仅能ssh登录
注释掉Subsystem sftp及Match User,ChrootDirectory等相关配置即可
注意修改完配置文件后,重启或重新加载ssh服务
systemctl restart sshd
or
systemctl reload sshd
【3】使某用户仅能sftp登录,ssh无法登录
如有多个用户需要配置,需要再次创建用户,指定家目录并授权和修改配置文件
如配置失败,注意权限问题
<1>创建一个用户组
groupadd sftp
<2>创建禁止登陆的用户,设置密码
useradd sftp_tom -g sftp -s /sbin/nologin -M
passwd sftp_tom
or
useradd sftp_tom -g sftp -s /sbin/nologin -d /data/www/sftp_tom
passwd sftp_tom
-d 为创建的用户指定家目录(使用此参数,家目录前的路径的目录必须存在)
-g 为创建的用户指定用户组
-s 指定默认登录shell
-M 不创建用户的家目录(如使用此参数后期得手动创建目录及配置权限)
/bin/false,用户禁止一切服务也无法登录,并且不会有任何提示
/sbin/nologin,用户仅无法登陆系统,仍可使用其他服务
补充:
如创建用户时未添加组,或添加组失败,可使用下列命令
1、给用户增加入新的用户组中
usermod -a -G 用户组 用户
2、给用户更换组
usermod -g 新用户组 用户
3、剔除某用户组里的某个用户
gpasswd -d 用户 用户组
<3>创建用户目录并授权(当没指定家目录时,如下操作)
mkdir -p /data/www/sftp/sftp_tom/upload
chown -R root.sftp /data/www/sftp/sftp_tom
chown -R sftp_tom.sftp /data/www/sftp/sftp_tom/upload
chmod 755 /data/www/sftp/sftp_tom
or
mkdir -p /data/www/sftp/sftp_tom
usermod -d /data/www/sftp/sftp_tom sftp_tom
<4>ssh配置文件配置(配置方法一)
vim /etc/ssh/sshd_config
#注释此行 Subsystem sftp /usr/lib/openssh/sftp-server
#添加以下几行
Subsystem sftp internal-sftp
Match user sftp_tom
ChrootDirectory /data/www/sftp/sftp_tom
Match user sftp_jack
ChrootDirectory /data/www/sftp/sftp_jack
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Match Group sftp
ChrootDirectory /data/www/sftp
#匹配单个用户 Match user,如有多个用户,也可写多个
#匹配sftp组 Match Group
#注意:ChrootDirectory设置的目录的权限及其上级所有文件夹权限属主和属组必须是root,且权限最大设置只能是755
<5>ssh配置文件配置(配置方法二)
vim /etc/ssh/sshd_config
#注释此行 Subsystem sftp /usr/lib/openssh/sftp-server
#添加以下几行
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /data/www/sftp/%u
#or ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
ForceCommand internal-sftp
#匹配单个用户 Match user,如有多个用户,也可写多个
#匹配sftp组 Match Group sftp
#注意:ChrootDirectory设置的目录的权限及其上级文件夹权限属主和属组必须是root,且权限最大设置只能是755
#%u 表示与用户名同名的目录,例如:/data/www/sftp/%u时,/data/www/sftp/sftp_tom
#%h 表示用户通过sftp登录后就把根目录切换到它自己的家目录,依据/etc/passwd中的根目录
<6>测试
sftp sftp_tom@IP
更多推荐
所有评论(0)