sftp是一种安全的文件传送协议,是ssh内含协议,也就是说只要sshd服务器启动了,sftp就可使用,不需要额外安装,它的默认端口和SSH一样为22。
1、使用root用户执行”ssh -V“命令查看openssh的版本:版本需大于4.8p1
ssh -V
2、修改配置文件sshd_config
vi /etc/ssh/sshd_config
修改如下:
a、 在下面这行的行首添加”#”号,表示注释掉该行:
#Subsystem sftp /usr/libexec/openssh/sftp-server
b、在文件末尾添加如下几行:
#强制执行内部sftp
Subsystem sftp internal-sftp
#限定只有sftpfroup组的才能访问
Match Group sftpgroup
#是否允许进行 X11 转发
X11Forwarding no
#是否允许TCP转发
AllowTcpForwarding no
#设定属于用户组sftp的用户访问的根目录
ChrootDirectory %h
#强制执行这里指定的命令而忽略客户端提供的任何命令
ForceCommand internal-sftp
也可使用如下命令添加:
echo -e "Subsystem sftp internal-sftp\nMatch Group sftpgroup\nX11Forwarding no\nAllowTcpForwarding no\nChrootDirectory %h\nForceCommand internal-sftp" >> /etc/ssh/sshd_config
3、sftp用户使用配置
a、使用root用户执行下面的命令创建用户组,组名为sftpgroup;创建sftp用户,用户名为sftpuser,并设置密码:
// 创建sftpgroup组
groupadd sftpgroup
// 创建sftpuser用户
useradd -g sftpgroup -M -s /sbin/nologin sftpuser
// 修改sftp用户密码
passwd sftpuser
注:为保障系统安全,添加用户的时候建议添加如下参数:
-M // 表示创建用户时不生成对应home目录
-s /sbin/nologin // 表示sftp用户不能登录系统
也可以复制下面的命令完成上述的操作,并将命令中的“123456“,改为自己需要设置的密码:
groupadd sftpgroup && useradd -g sftpgroup -M -s /sbin/nologin sftpuser && echo "123456" | passwd --stdin sftpuser
b、使用root用户执行下面的命令新建目录/opt/sftpfile(此目录应该为sftp默认工作目录),将其设置为sftpuser的家目录,并指定目录权限:
mkdir -p /opt/sftpfile //-p 表示即递归创建目录
usermod -d /opt/sftpfile sftpuser // -d 表示修改用户home目录
chown root:sftpgroup /opt/sftpfile // 设置目录的所有者和所属组
chmod 755 /opt/sftpfile // 设置目录权限,请根据实际情况要求设置权限
操作后查看目录权限:
注:权限数字表示示例:
r=4,w=2,x=1;755表示文件的所有者权限为可读可写可执行(rwx),所属组的权限为可读可执行(r-x),其他人的权限为可读可执行(r-x)。
4、重启SSH
systemctl restart sshd.service
5、验证:客户端登录sftp
sftp [email protected]
1、SFTP常用命令
a、成功登陆sftp后,输入命令”help”,可以查看到sftp所有支持的命令,截图如下:
b、 sftp常用命令使用介绍
ls // 查看远程sftp服务器下当前目录下的文件和目录
lls // 查看本机当前目录下的文件和目录
cd // 切换远程sftp服务器的路径
lcd // 切换本机路劲
pwd // 查看远程sftp服务器的当前路径
lpwd // 查看本机的当前路径
put // 上传本机文件到远程sftp服务器
get // 下载远程sftp服务器中的文件到本机
!command // 在本机执行’!’号后面的命令
exit/quit // 退出
2、SFTP安全使用规范
a、SSH服务禁用root用户登陆
vim /etc/ssh/sshd_config
PermitRootLogin no
b、合理设置用户权限
sftp服务使用过程中可能会遇到需要新增用户来使用sftp,新增用户和用户的工作目录请参考此文档前面的内容,目录权限设置上要遵循以下2点:
1、ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;
2、ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最大设置只能是755。
SFTP目录权限应当严格按照项目实际需求来设置,如果不能遵循以上2点,即使是该目录仅属于某个用户,也可能会影响到所有的SFTP用户。
c、其他规范及安全要求包括:
1、 定时检查软件漏洞,即时修补漏洞或升级到安全的软件版本。
2、 对于文件数据,应该定期备份,或按重要程度设置备份计划策略。
3、 每天检查sftp数据存放磁盘容量,或通过脚本、监控软件实现磁盘容量超限告警,二十四小时监控磁盘使用情况。
4、 对使用人员进行培训和严格的使用规范要求。
5、 即时有效的处理sftp运行过程中遇到的各种故障和问题
等…