1. 概述
Linux 系统自带 SFTP 服务,本文以CentOS 7系统为例,介绍如何在 Linux 系统中使用 SFTP 。具体步骤可能因操作系统版本和配置差异而有所不同。
2. 安装OpenSSH服务器
SFTP是通过SSH协议进行安全文件传输的,因此需要安装OpenSSH服务器。
2.1 判断是否已安装OpenSSH服务器
1)打开终端或命令行界面。以root用户身份登录。
2)运行以下命令以判断是否安装OpenSSH服务器:
yum -q list openssh-server
如果看到与OpenSSH相关的输出行,说明系统中已安装了OpenSSH客户端。请确保OpenSSH服务器版本大于 4.8p1,如果版本过低,需要更新。
如果未找到相关的OpenSSH输出,并显示类似于"command not found"等错误消息,则表示系统尚未安装OpenSSH服务器。
2.2 安装OpenSSH服务器
如根据2.2节查询出,系统已安装 4.8p1 以上版本的 OpenSSH 服务器,可跳过本节操作。
如根据2.1节查询出,系统尚未安装OpenSSH服务器,或已安装的OpenSSH服务器版本不符合要求,则需执行本节操作。
1)打开终端或命令行界面。以root用户身份登录。
2)运行以下命令以更新系统软件包列表:
sudo yum update
3)运行以下命令以安装OpenSSH服务器:
sudo yum install openssh-server
2.3 修改并发和会话数限制
由于使用SFTP时,可能会出现高并发状况,因此需要提前根据预期负载情况来优化服务器的并发和会话数限制。
否则在高并发状态下,SFTP连接会出现报错:connection is closed by foreign host
参数介绍:
参数 | 说明 |
---|---|
MaxStartups | 用于限制 SSH 服务器允许的最大并发连接数和连接速率限制,即同时连接到服务器的客户端数量的上限 参数值的格式为 a:b:c
默认值MaxStartups 10:30:100,表示最大并发连接数为10,限制为30分钟内的连接速率,并允许每30分钟增加100个连接。 |
MaxSessions | 用于限制一个用户可以同时建立的 SSH 会话数 参数值的格式是一个整数,表示允许的最大会话数 默认值MaxSessions 10,表示每个用户最多可以同时打开 10 个 SSH 会话 |
修改方法:
1)打开终端或命令行界面。以root用户身份登录。
2)使用文本编辑器(如vi或nano),打开/etc/ssh/sshd_config文件。
3)在文件中找到包含MaxStartups和MaxSessions的行。
默认情况下,这两行是注释状态(使用#开头),取消注释行。或者如果不存在,请在文件的末尾添加以下行并保存:
MaxStartups 1000:30:1200
MaxSessions 1000
4)重新加载SSH服务器的配置以应用更改。可以使用以下命令重新加载OpenSSH服务器:
sudo systemctl reload sshd
2.4 配置SSH身份验证
默认情况下,OpenSSH服务器使用系统上的用户进行身份验证。需要确保有一个可以用于登录的用户帐户,并且该用户具有适当的权限。
本节示例创建一个用户名为fanruan的用户,并为其设置密码和文件夹权限。
1)新建用户(将"fanruan"替换为你要创建的用户名)
sudo adduser fanruan
2)为用户设置密码(将"fanruan"替换为你要创建的用户名,并按照提示设置密码)
sudo passwd fanruan
3)准备一个文件夹,用于存放帆软应用工程文件。本文示例/home/fanruan
4)请确保该用户有该文件夹的读写权限(将"/home/fanruan"替换为你的文件夹路径)
chmod -R 777 /home/fanruan
3. 准备文件服务器
3.1 拷贝工程文件
1)进入帆软应用%Tomcat_HOME%/webapps/webroot文件夹。
2)将其中的 WEB-INF 文件夹,拷贝到 OpenSSH 服务器准备好的 /home/fanruan 目录(即2.4节准备的文件夹)下。
3.2 启动 SFTP 服务
1)打开终端或命令行界面。以root用户身份登录。
2)运行以下命令以检查SSH服务器的状态:
service sshd status
如果Active状态为running,说明 SFTP 已启动。
如果Active状态不是running,说明SFTP未启动。
3)运行以下命令以启动SSH服务器:
service sshd start
3.3 开放端口
SFTP 所在服务器防火墙需开放 22 端口。
4. 集群配置 SFTP 作为文件服务器
管理员登录FineBI系统,点击「管理系统>智能运维>集群配置」,详情配置步骤请参考:Linux系统手动配置标准抽取集群
配置文件服务器时,协议选择 SFTP ,路径填写绝对路径,为 WEB-INF 文件夹的路径。如下图所示:
5. 注意事项
5.1 运维知识
service sshd status #查看 sftp 的状态
service sshd start #启动服务
service sshd stop #停止服务
service sshd restart #重启 sftp
注:SFTP 默认是随系统启动而启动的,更多运维知识参见:Linux版集群运维手册
5.2 无法上传文件或者无法重启 sshd 服务
登录 Sftp 操作文件报错“550 create directory operation failed”或者无法登录以及开启777权限以后仍然没有读写权限考虑以下操作。
这是 SELinux(Security-Enhanced Linux,是美国国家安全局对于强制访问控制的实现)安装机制问题,需要关闭 SELinux。
1)永久关闭 SELinux 的方式
vi /etc/selinux/config # 编辑 SELinux 的 config 文件
SELINUX=enforcing --> SELINUX=disabled # 永久关闭 SELinux 重启系统生效
2)临时关闭 SELinux 的方式
setenforce 0 # 执行命令,仅临时关闭,重启后又会恢复原状
3)不关闭 SELinux
getsebool -a | grep ftpd # 查询的结果中,只有 ftp_home_dir 和 allow_ftpd_full_access 必须为 on 才能使 vsftpd 具有访问 ftp 根目录,以及文件传输等权限
setsebool -P ftp_home_dir 1 # 执行即可
setsebool -P allow_ftpd_full_access 1 # 执行即可
注:更多 SELinux 相关的知识请参见:SELinux 入门