CentOS7搭建SFTP
- 一、安装OpenSSH服务
- 二、开放端口
- [三、创建 SFTP 用户及目录](#三、创建 SFTP 用户及目录)
- 四、配置权限限制
- 五、测试
一、安装OpenSSH服务
shell
# 检查是否已安装 SSH
rpm -qa | grep openssh-server
# 查看sshd服务状态
systemctl status sshd
# 若未安装则执行安装
yum install openssh-server -y
# 启动并设置开机自启
systemctl start sshd
systemctl enable sshd
# 查看ssh版本
ssh -V
二、开放端口
SSH/SFTP 默认端口为 22
shell
# SSH/SFTP 默认端口为 22,如需修改端口,更改如下端口
vim /etc/ssh/sshd_config
Port 22
# 重启
systemctl restart sshd
# 开放22端口
firewall-cmd --add-port=22/tcp --permanent
firewall-cmd --reload
# 查看防火墙已放行端口
firewall-cmd --list-ports
三、创建 SFTP 用户及目录
shell
# 创建用户组
groupadd sftpusers
# 创建用户
# -g 加入用户组
# -s /sbin/nologin :禁止ssh shell登录,仅允许SFTP登录
# -M 不自动创建系统默认家目录
useradd -g sftpusers -s /sbin/nologin -M sftpuser
# 设置用户密码
passwd sftpuser
# 创建SFTP根目录(chroot锁定目录)
# 路径:/sftp/用户名
mkdir -p /sftp/sftpuser
# 根目录必须属主root,权限755,SFTP chroot严格校验
chown root:root /sftp/sftpuser
chmod 755 /sftp/sftpuser
# 创建用户可读写上传目录(用户只对upload目录有权限)
mkdir -p /sftp/sftpuser/upload
chown sftpuser:sftpusers /sftp/sftpuser/upload
四、配置权限限制
shell
# 编辑配置文件
vim /etc/ssh/sshd_config
# 注释原有配置
# Subsystem sftp /usr/libexec/openssh/sftp-server
# 使用 SSH 内置的 SFTP 服务
Subsystem sftp internal-sftp
# 匹配 用户组 sftpusers 下的所有用户(推荐使用)
Match Group sftpusers
# 目录锁定:用户只能访问 /sftp/自身用户名 目录,无法跳出访问服务器其他任何文件
ChrootDirectory /sftp/%u
# 强制仅运行SFTP文件传输,禁止所有shell命令执行
ForceCommand internal-sftp
# 全量安全加固配置(关闭所有不必要通道,防止端口转发、代理、穿透、提权)
AllowTcpForwarding no
AllowAgentForwarding no
X11Forwarding no
PermitTunnel no
PermitTTY no # 禁止分配伪终端,彻底无法登录shell,仅纯文件传输,最安全
# 匹配特定用户(如需匹配多个用户,可使用 Match User user1,user2)(不推荐)
#Match User sftpuser
#ChrootDirectory /sftp/%u
#ForceCommand internal-sftp
#AllowTcpForwarding no
#AllowAgentForwarding no
#X11Forwarding no
#PermitTunnel no
#PermitTTY no
# 校验配置文件语法(无任何输出 = 配置完全正确)
# 若有报错,会直接提示错误行号、错误原因,根据提示修改即可
sshd -t
# 重启
systemctl restart sshd
五、测试
shell
# 另一台服务器连接
sftp sftpuser@服务器IP
连接成功后验证:
pwd # 显示 / ,代表已被chroot锁定
ls # 仅能看到 upload 文件夹
put 本地文件 # 可上传文件至upload目录