CentOS 配置 sftp 服务

简介: CentOS 配置 sftp 服务

检查 openssh 版本

如果需要使用 ChrootDirectory 参数配置用户访问的默认路径,openssh 的版本不能低于 4.8
ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017

创建 sftp 用户

Linux 系统内已存在的用户,都是可以直接使用 sftp 服务,创建用户是为了一些特殊的场景使用,做一些区分

for-sftp 用户的登录 shell 指定为 /sbin/nologin ,不让 for-sftp 用户可以通过 ssh 命令登录到服务器

useradd for-sftp -s /sbin/nologin
for-sftp 用户设置密码
echo for-sftp | passwd --stdin for-sftp

配置 sftp

多备份,少跑路
cp /etc/ssh/sshd_config{,.bak}
可以直接过滤 sftp 关键字
# 注释掉下面的这行内容,因为配置的 for-sftp 用户没有登录 shell 的权限
## 不注释的话,登录的时候会返回报错:Received message too long 1416128883
# Subsystem sftp /usr/libexec/openssh/sftp-server
# 修改成下面的方式来打开 sftp 服务
Subsystem sftp internal-sftp
# Match User 后面的配置内容,只对 Match User 指定的用户生效,多个用户以逗号分隔
## 也可以配置成 Match Group,对指定的组生效,同样,多个组以逗号分隔
Match User for-sftp
# 指定 sftp 登录的默认路径
## 目录必须存在,否则 sftp 连接会报错
ChrootDirectory /data/sftp
# 指定 sftp 命令
ForceCommand internal-sftp
  • 配置了 ChrootDirectory 时,sftp 对于 ChrootDirectory 目录的权限要求比较死

    • 不允许 ChrootDirectory属组有写入权限,也就是最高只支持 750755 两种权限
    • ChrootDirectory属主必须是 root 用户

      • 不满足以上两种条件时,用 for-sftp 用户登录 sftp 会报错:

        • packet_write_wait: Connection to <ip地址> port 22: Broken pipe
        • Couldn't read packet: Connection reset by peer

重启 sshd 服务

重启 sshd 服务才能使 sftp 配置生效
systemctl restart sshd

如果出现了以下报错

Directive 'Protocol' is not allowed within a Match block

那说明 /etc/ssh/sshd_config 配置文件内开了 Protocol 这个配置,需要把 sftp 相关的配置,移到 Protocol 后面几行就行,可以直接放到配置文件最后的地方,然后重启 sshd 服务就可以解决

创建 ChrootDirectory

  • -m 750 - 指定目录创建时的权限

    • -m 只会指定创建时的最后一级目录,不影响前面的父级目录
  • -p - 父级目录不存在时,创建父级目录
  • 要给 ChrootDirectory 配置一个 for-sftp 组的权限,否则 for-sftp 用户也没权限进入到自己有权限的路径下搞事情
mkdir /data/sftp -m 750 -p
chown root.for-sftp /data/sftp
sftp 配置了 ChrootDirectory 后,就只能查看文件,没办法上传文件,所以要在 ChrootDirectory 目录下在创建一个 for-sftp 用户有权限的路径,就可以上传文件了
mkdir /data/sftp/for-sftp
chown for-sftp.for-sftp /data/sftp/for-sftp

登录 sftp 搞事情

图省事,我就直接使用 localhost 了
sftp for-sftp@localhost
for-sftp@localhost's password:
Connected to localhost.
sftp> ls
for-sftp
sftp> cd for-sftp/
sftp> ls
sftp> put anaconda-ks.cfg
Uploading anaconda-ks.cfg to /for-sftp/anaconda-ks.cfg
anaconda-ks.cfg                                                      100% 1526     2.8MB/s   00:00
sftp> ls
anaconda-ks.cfg
然后我们就把本地的 anaconda-ks.cfg 文件上传到 sftp 服务器上了,当我们查看 ChrootDirectory 目录的 for-sftp 目录下就会有 anaconda-ks.cfg 这个文件了

sftp 常用命令

登录到 sftp 服务器之后,输入 help 就可以查看所有的命令了
Available commands:
# 退出 sftp
bye                                Quit sftp
# 进入到 sftp 内指定的路径
cd path                            Change remote directory to 'path'
# 修改 sftp 内指定路径的属租
chgrp grp path                     Change group of file 'path' to 'grp'
# 修改 sftp 内指定路径的权限 [ ugo 权限]
chmod mode path                    Change permissions of file 'path' to 'mode'
# 修改 sftp 内指定路径的所有者
chown own path                     Change owner of file 'path' to 'own'
# 查看 sftp 内指定路径的统计信息
df [-hi] [path]                    Display statistics for current directory or
                                   filesystem containing 'path'
# 退出 sftp
exit                               Quit sftp
# 从 sftp 下载文件到本地
get [-afPpRr] remote [local]       Download file
# 恢复下载
reget [-fPpRr] remote [local]      Resume download file
# 恢复上传
reput [-fPpRr] [local] remote      Resume upload file
# 查看帮助
help                               Display this help text
# 修改本地所在路径
lcd path                           Change local directory to 'path'
# 查看本地路径下的文件详情
lls [ls-options [path]]            Display local directory listing
# 本地创建路径
lmkdir path                        Create local directory
# 生成连接文件
ln [-s] oldpath newpath            Link remote file (-s for symlink)
# 显示本地所在路径
lpwd                               Print local working directory
# 同 linux 查看指定路径下有哪些文件
ls [-1afhlnrSt] [path]             Display remote directory listing
# 设置本地 umask
lumask umask                       Set local umask to 'umask'
# sftp 内创建目录
mkdir path                         Create remote directory
# 切换进度表的显示
progress                           Toggle display of progress meter
# 本地文件上传到 sftp 内
put [-afPpRr] local [remote]       Upload file
# 显示 sftp 内当前所在路径
pwd                                Display remote working directory
# 退出 sftp
quit                               Quit sftp
# sftp 内文件重命名
rename oldpath newpath             Rename remote file
# sftp 内删除文件
rm path                            Delete remote file
# sftp 内删除目录
rmdir path                         Remove remote directory
# 生成连接文件
symlink oldpath newpath            Symlink remote file
# 查看 sftp 版本
version                            Show SFTP version
# 在本地执行命令
!command                           Execute 'command' in local shell
# 逃到本地 [ 其实就是退出 sftp ]
!                                  Escape to local shell
# 显示帮助
?                                  Synonym for help
目录
相关文章
|
1月前
|
Java
CentOS7.8配置Adoptium-Java17运行环境
本指南介绍如何设置清华镜像源并安装 Temurin-17-JRE 运行环境。首先,编辑 `/etc/yum.repos.d/adoptium.repo` 文件,配置清华镜像源。接着,使用 `yum install -y temurin-17-jre` 命令安装 Temurin-17-JRE,并通过 `java --version` 验证安装成功。相关配置和操作界面截图附后。
45 8
|
1月前
|
网络协议 Java 应用服务中间件
centos7环境下tomcat8的安装与配置
本文介绍了在Linux环境下安装和配置Tomcat 8的详细步骤。首先,通过无网络条件下的文件交互软件(如Xftp 6或MobaXterm)下载并解压Tomcat安装包至指定路径,启动Tomcat服务并测试访问。接着,修改Tomcat端口号以避免冲突,并部署Java Web应用项目至Tomcat服务器。最后,调整Linux防火墙规则,确保外部可以正常访问部署的应用。关键步骤包括关闭或配置防火墙、添加必要的端口规则,确保Tomcat服务稳定运行。
|
3月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
312 2
|
4月前
|
监控 安全 Linux
CentOS7下安装配置ntp服务的方法教程
通过以上步骤,您不仅能在CentOS 7系统中成功部署NTP服务,还能确保其配置合理、运行稳定,为系统时间的精确性提供保障。欲了解更多高级配置或遇到特定问题,提供了丰富的服务器管理和优化资源,可作为进一步学习和求助的平台。
465 1
|
4月前
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
197 1
|
4月前
|
存储 监控 Linux
在 CentOS 7 中如何对新硬盘进行分区、格式化、挂载及配置最佳实践
本文详细介绍了在 CentOS 7 中如何对新硬盘进行分区、格式化、挂载及配置最佳实践,包括使用 `fdisk` 创建分区、`mkfs` 格式化分区、创建挂载点、编辑 `/etc/fstab` 实现永久挂载等步骤,旨在有效管理服务器磁盘空间,提高系统稳定性和可维护性。
693 1
|
4月前
|
安全 Linux 数据库连接
CentOS 7环境下DM8数据库的安装与配置
【10月更文挑战第16天】本文介绍了在 CentOS 7 环境下安装与配置达梦数据库(DM8)的详细步骤,包括安装前准备、创建安装用户、上传安装文件、解压并运行安装程序、初始化数据库实例、配置环境变量、启动数据库服务、配置数据库连接和参数、备份与恢复、以及安装后的安全设置、性能优化和定期维护等内容。通过这些步骤,可以顺利完成 DM8 的安装与配置。
569 0
|
Linux 虚拟化
CentOS 7.X配置连接网络
应用场景 Linux虚拟机,系统安装完毕后,无法连接网络,由于是最小化安装,很多命令无法直接yum安装,无法连接外网wget下载资源等等,造成很大的不便,因此需要进行配置连接外网! 操作指南 1. 开启VMware NAT Service 右击“计算机”,选择“管理”,在“服务和应用程序”中,选择“服务”,在右边找到“VMware NAT Service”服务,进行开启。
1194 0
|
Linux 虚拟化 网络协议
CentOS 6.X配置连接网络
应用场景 Linux虚拟机,系统安装完毕后,无法连接网络,由于是最小化安装,很多命令无法直接yum安装,无法连接外网wget下载资源等等,造成很大的不便,因此需要进行配置连接外网! 操作指南 1. 开启VMware NAT Service 右击“计算机”,选择“管理”,在“服务和应用程序”中,选择“服务”,在右边找到“VMware NAT Service”服务,进行开启。
842 0
|
3天前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
51 20