SFTP是一种安全文件传输协议,用于通过加密的SSH传输访问,管理和传输文件。 与传统的FTP协议相比,SFTP提供了FTP的所有功能,并且更易于配置。本文以CentOS 7.9操作系统为例,介绍配置SFTP、使用SFTP上传、下载文件和文件夹的操作步骤。
操作步骤
- 以root用户登录云服务器。
- 执行以下命令,查看OpenSSH版本。
ssh -V
回显信息如下所示。
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
如果OpenSSH版本低于4.8p1,需执行以下命令,升级OpenSSH。
yum update -y openssh-server
- 配置SFTP。
- 执行以下命令,创建用户组。
本示例中用户组为
sftp
。
groupadd sftp
- 执行以下命令,创建用户并加入到用户组
sftp
中,同时设置用户密码。
本示例用户名为
sftpuser
。
useradd -g sftp -s /sbin/nologin sftpuser
passwd sftpuser
运行命令后,根据命令行提示设置
sftpuser
用户的密码,回显信息类似如下所示。
[root@iZbp1702ydmde0jkav7**** ~]# useradd -g sftp -s /sbin/nologin sftpuser
[root@iZbp1702ydmde0jkav7**** ~]# passwd sftpuser
Changing password for user sftpuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
说明 如果已创建用户,但是用户不在创建的用户组
sftp
中,运行命令
usermod -g sftp 用户名 移动用户到用户组中。
- 执行以下命令,更改属主和权限。
chown root:sftp /home/sftpuser
chmod 755 /home/sftpuser
- 执行以下命令,创建文件目录供用户
sftpuser
上传和下载文件。
本示例创建文件目录为
/home/sftpuser/test。
mkdir /home/sftpuser/test
- 依次执行以下命令,修改文件目录的拥有者和权限。
chown -R sftpuser:sftp /home/sftpuser/test
chmod -R 755 /home/sftpuser/test
- 执行以下命令,配置sshd_config文件。
vim /etc/ssh/sshd_config
按
i进入编辑模式,注释掉如下信息。
#Subsystem sftp /usr/libexec/openssh/sftp-server
在文件末尾添加如下内容:
Subsystem sftp internal-sftp #指定使用sftp服务使用系统自带的internal-sftp
Match Group sftp #限定只有sftp组的用户才能访问
ChrootDirectory /home/sftpuser #设定属于用户组sftp的用户访问的根目录,需根据实际替换根目录
ForceCommand internal-sftp #指定sftp命令
AllowTcpForwarding no #禁止允许TCP转发
X11Forwarding no #禁止X11转发
配置如下图所示。

按
Ecs,输入
:wq并按
Enter保存并关闭配置文件。
- 执行以下命令,重启sshd服务。
- 使用SFTP上传、下载文件或文件夹。
- 在本地主机执行以下命令,远程连接到云服务器。
sftp -oPort=22 用户名@IP地址
本示例中,用户名为
sftpuser
,云服务器ECS的公网IP地址为47.99.XX.XX,示例命令如下:
sftp -oPort=22 sftpuser@47.99.XX.XX
连接成功后,您可以使用交互式sftp命令。
[root@iZuf695wuq3hiktop63**** ~]# sftp -oPort=22 sftpuser@47.99.XX.XX
sftpuser@47.99.XX.XX's password:
Connected to 47.99.XX.XX.
sftp>
sftp命令示例如下:
sftp> pwd #查看远程云服务器的当前目录
Remote working directory: /
sftp> lpwd #查看本地云服务器的当前目录
Local working directory: /root
sftp> ls #查看远程云服务器的当前目录下的文件或文件夹
test
sftp> lls #查看本地云服务器的的当前目录下的文件或文件夹
test.txt
sftp>
- 执行以下命令,上传或下载文件、文件夹。
- 执行以下命令,退出SFTP。