centos

CentOS SFTP使用教程大全

小樊
48
2025-11-03 15:55:03
栏目: 智能运维

CentOS SFTP使用教程大全

一、SFTP简介

SFTP(SSH File Transfer Protocol)是基于SSH协议的安全文件传输协议,相比传统FTP,它通过加密通道传输数据,有效防止密码泄露和数据篡改,是企业级文件传输的常用方案。

二、基础环境准备

1. 更新系统

确保系统软件包为最新版本,避免兼容性问题:

sudo yum update -y

2. 安装OpenSSH服务器

CentOS默认仓库包含OpenSSH,安装命令如下:

sudo yum install openssh-server -y

3. 启动并启用SSH服务

安装完成后,启动SSH服务并设置为开机自启:

sudo systemctl start sshd
sudo systemctl enable sshd

三、配置SFTP服务

1. 编辑SSH配置文件

使用文本编辑器打开/etc/ssh/sshd_config,按需修改以下配置:

sudo vi /etc/ssh/sshd_config

关键配置说明

2. 重启SSH服务

保存配置后,重启SSH服务使更改生效:

sudo systemctl restart sshd

四、创建SFTP用户及目录

1. 创建专用SFTP用户组

创建一个专门用于SFTP的用户组(如sftpgroup):

sudo groupadd sftpgroup

2. 创建SFTP用户并加入组

创建用户时,设置家目录并指定shell为/sbin/nologin(禁止SSH登录):

sudo useradd -m -G sftpgroup -s /sbin/nologin sftpuser1
sudo passwd sftpuser1  # 设置强密码

3. 设置目录权限

SFTP要求chroot目录(用户根目录)必须属于root,且上传目录属于用户自身,以保证权限正确。

示例:创建chroot目录及上传目录

# 创建chroot目录(用户根目录)
sudo mkdir -p /data/sftp/sftpuser1
sudo chown root:root /data/sftp/sftpuser1  # 必须为root所有
sudo chmod 755 /data/sftp/sftpuser1       # 权限必须为755

# 创建上传目录(用户可写入)
sudo mkdir -p /data/sftp/sftpuser1/uploads
sudo chown sftpuser1:sftpgroup /data/sftp/sftpuser1/uploads  # 属于用户及组
sudo chmod 755 /data/sftp/sftpuser1/uploads               # 权限设为755(或775,根据需求)

五、测试SFTP连接

1. 使用命令行测试

在本地终端使用以下命令连接服务器(替换your_server_ipsftpuser1):

sftp sftpuser1@your_server_ip

输入密码后,若成功登录,会显示sftp>提示符,可通过以下命令测试文件传输:

# 上传文件(本地文件->服务器)
put /local/path/file.txt /uploads/

# 下载文件(服务器->本地)
get /uploads/file.txt /local/path/

# 查看当前目录
ls

# 退出连接
bye

2. 使用图形化客户端测试

推荐使用FileZillaWinSCP等客户端,配置连接信息:

六、常见问题排查

1. 权限问题

若出现“Permission denied”错误,需检查:

2. SELinux问题

若SELinux处于enforcing模式,需调整文件上下文:

# 允许SFTP用户访问上传目录
sudo semanage fcontext -a -t ssh_home_t "/data/sftp/sftpuser1/uploads(/.*)?"
sudo restorecon -Rv /data/sftp/sftpuser1/uploads

3. 防火墙问题

确保防火墙允许SSH(默认端口22)流量:

sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

七、高级配置(可选)

1. 限制用户只能上传(禁止删除/修改)

sshd_config中添加ChrootDirectory后,用户无法删除或修改上传的文件。若需更严格的权限,可将上传目录权限设为755,并移除用户的写入权限:

sudo chmod 755 /data/sftp/sftpuser1/uploads

2. 使用密钥认证(增强安全性)

生成密钥对(本地机器):

ssh-keygen -t rsa -b 4096

将公钥复制到服务器:

ssh-copy-id sftpuser1@your_server_ip

修改sshd_config,禁用密码认证:

PasswordAuthentication no

重启SSH服务:

sudo systemctl restart sshd

此后,连接时无需输入密码,只需指定私钥路径:

sftp -i /local/path/private_key sftpuser1@your_server_ip

通过以上步骤,即可在CentOS上完成SFTP的配置与使用,满足企业级文件传输的安全需求。

0
看了该问题的人还看了