前言:
SFTP是基于默认的22端口,是ssh内含的协议,只要启动了sshd就可以使用。sftp采用的是ssh加密隧道,安装性方面较ftp强,而且依赖的是系统自带的ssh服务本次使用liunx自带的internal-sftp。
1、创建用户并设置密码
useradd -s /bin/false sftpuser #该命令限制了sftp 远程登录
passwd sftpuser 输入密码:hzmcAdmin123456
2、修改/etc/ssh/sshd_config配置文件
#注释掉下面这行
#Subsystem sftp /usr/libexec/openssh/sftp-server
同时添加以下内容:
Subsystem sftp internal-sftp #指定使用sftp服务使用系统自带的internal-sftp
Match user sftpuser #匹配用户,如果要匹配多个组,多个组之间用逗号分割
ChrootDirectory /sftp_data #设定属于用户组sftp的用户访问的根文件夹
ForceCommand internal-sftp #指定sftp命令,强制执行内部sftp,并忽略 ~/.ssh/rc文件中的命令
X11Forwarding no #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
AllowTcpForwarding no
3、关闭selinux
修改/etc/sysconfig/selinux配置文件
将文件中的SELINUX=enforcing 修改为 SELINUX=disabled
然后执行以下命令
setenforce 0 (// 0是关闭,1是开启 )
4、重启sshd
systemctl restart sshd 或systemctl restart sshd.service #重启sshd
systemctl status sshd.service #查询sshd启动状态
5、权限赋予
(ChrootDirectory /sftp_data) 该目录权限及所有的上级文件夹权限,属主和属组必须是root;
(ChrootDirectory /sftp_data) 该目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最大设置只能是755
由于/data/sftpuser 是root创建的,权限755,如果sftpuser直接sftp过去是没有权限写入,因此,需要/data/sftp下创建新目录授权
创建文件夹:
mkdir /sftp_data/fileload
权限赋予
chown sftpuser:sftpuser /sftp_data/fileload 将目录给用户
chmod 755 /sftp_data/fileload #权限也只能是755,否则无法限制目录
6、登录与常用命令
linux:
验证可以使用xshell 输入sftp user@ip来登录
命令:
cd : 进入sftp路径
!cd : 进入本地linxu路径
ls : 显示sftp目录列表
!ls :显示本地linux列表
put 本地路径及文件名 :上传本地文件到sftp当前目录
put -r 本地路径及文件夹名 :上传本地文件夹到sftp当前目录
get sftp路径及文件名: 下载sftp文件到本地当前目录
mkdir 路径:创建sftp目录
!mkdir 路径:创建本地目录
pwd 显示远程路径
!pwd 显示本地路径
rmdir 路劲 :移除sftp目录
!rmdir 路径:移除本地目录
rm 路径 : 删除远程文件
!rm 路径: 删除本地文件
version 显示协议版本
exit 退出sftp
windows:
进入cmd 使用sftp user@ip来登录
命令:
cd : 进入sftp路径
lcd : 进入本地windows路径
ls : 显示sftp目录列表
lls :显示本地linux列表
put 本地路径及文件名 :上传本地文件到sftp当前目录
get sftp路径及文件名: 下载sftp文件到本地当前目录
version 显示协议版本
exit 退出sftp