CentOS7搭建SFTP

CentOS7搭建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目录
相关推荐
wanhengidc2 小时前
服务器能干什么?
运维·服务器·网络·安全·web安全
Watink Cpper2 小时前
Ubuntu24.04网络图标消失导致无法上网--排查得到原因:内核和驱动版本不匹配
运维·网络·linux内核·运维开发·debug·ubuntu24.04
深邃-2 小时前
【Web安全】-Kali,Linux基础:Kali系统安装,Kali鼠标不显示(版本问题),Linux系统介绍(1)
linux·计算机网络·安全·web安全·网络安全·系统安全·网络攻击模型
蜡台2 小时前
Centos 安装Mysql
linux·mysql·centos·yum·mysql8
toooooop82 小时前
wsl系统无损迁移到ssd硬盘
linux·wsl
ShineSpark2 小时前
Ubuntu下SDL窗口偶发卡住问题深度分析
linux·运维·ubuntu
zhougl9962 小时前
非root用户,链接ssh,并上传git
运维·git·ssh
tobias.b2 小时前
Centos Linux 维护
linux·python·centos
深邃-2 小时前
【Web安全】-Kali,Linux基础:Linux终端介绍,Linux文件操作,Linux文件编辑(2)
linux·计算机网络·安全·web安全·网络安全·系统安全·安全威胁分析