CentOS SFTP使用教程大全
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
关键配置说明
-
启用内置SFTP子系统(推荐):
注释掉默认的sftp-server路径,使用internal-sftp(性能更好,无需额外安装):#Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp -
限制用户/组访问(推荐):
通过Match指令限制特定用户或组的SFTP权限,例如限制group1组用户:Match Group group1 ChrootDirectory /data/sftp/%u # 将用户限制在自己的家目录(%u代表用户名) ForceCommand internal-sftp # 强制使用SFTP,禁止SSH shell访问 AllowTcpForwarding no # 禁止TCP转发 X11Forwarding no # 禁止X11转发 -
可选:禁用密码认证(增强安全性):
若使用密钥认证,可添加以下配置(需提前配置密钥):PasswordAuthentication no
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_ip和sftpuser1):
sftp sftpuser1@your_server_ip
输入密码后,若成功登录,会显示sftp>
提示符,可通过以下命令测试文件传输:
# 上传文件(本地文件->
服务器)
put /local/path/file.txt /uploads/
# 下载文件(服务器->
本地)
get /uploads/file.txt /local/path/
# 查看当前目录
ls
# 退出连接
bye
2. 使用图形化客户端测试
推荐使用FileZilla或WinSCP等客户端,配置连接信息:
- 协议:SFTP
- 主机:服务器IP地址
- 端口:22(默认)
- 用户名/密码:SFTP用户凭据
连接后,即可通过拖拽方式实现文件传输。
六、常见问题排查
1. 权限问题
若出现“Permission denied”错误,需检查:
- chroot目录(如
/data/sftp/sftpuser1)是否属于root,权限是否为755; - 上传目录(如
/data/sftp/sftpuser1/uploads)是否属于SFTP用户,权限是否为755(或775); - SELinux是否开启(若开启,需调整上下文,见下文)。
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的配置与使用,满足企业级文件传输的安全需求。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS SFTP使用教程大全
本文地址: https://pptw.com/jishu/741402.html
