Linux如何开启SFTP服务

在Linux中启用SFTP服务通常只需确保OpenSSH服务器已安装并运行,SFTP默认集成在SSH中,因此启动sshd服务后,用户即可使用SFTP客户端连接,通过编辑/etc/ssh/sshd_config可配置用户访问权限或限制目录。

在Linux系统中开启SFTP(SSH File Transfer Protocol)服务是管理文件传输的安全高效方式,作为OpenSSH的子系统,SFTP默认通过SSH协议加密传输数据,无需额外安装独立服务,以下是详细操作指南:

Linux如何开启SFTP服务


前置条件

  1. 已安装OpenSSH服务器
    执行命令检查:

    ssh -v 2>&1 | grep "OpenSSH"  # 查看客户端版本(多数系统默认安装)
    systemctl status sshd         # 检查SSH服务状态

    若未安装,使用对应命令安装:

    # Debian/Ubuntu
    sudo apt update && sudo apt install openssh-server -y
    # CentOS/RHEL
    sudo yum install openssh-server -y
  2. 防火墙配置
    确保防火墙允许SSH端口(默认为22):

    sudo ufw allow 22/tcp        # Ubuntu UFW
    sudo firewall-cmd --permanent --add-service=ssh && sudo firewall-cmd --reload  # CentOS Firewalld

配置SFTP访问

SFTP通过SSH服务运行,但需限制用户权限以增强安全性,以下是两种常用场景:

场景1:允许普通SSH用户使用SFTP

  • 默认配置
    所有拥有SSH登录权限的用户均可使用SFTP,无需额外设置。
    验证连接(以用户username为例):

    sftp username@服务器IP

场景2:创建仅限SFTP的受限用户(推荐)

  1. 创建用户组与用户

    sudo groupadd sftpusers       # 创建专用用户组
    sudo useradd -m -G sftpusers -s /sbin/nologin sftp_user  # 禁止Shell登录
    sudo passwd sftp_user         # 设置密码
  2. 修改SSH配置文件
    编辑/etc/ssh/sshd_config

    sudo nano /etc/ssh/sshd_config

    在文件末尾添加:

    Linux如何开启SFTP服务

    Match Group sftpusers        # 针对sftpusers组用户
       ChrootDirectory /home/%u  # 限制用户到其家目录(%u为用户名)
       ForceCommand internal-sftp  # 强制使用SFTP,禁用Shell
       PermitTunnel no
       AllowAgentForwarding no
       AllowTcpForwarding no
       X11Forwarding no
  3. 设置目录权限

    sudo chown root:root /home/sftp_user      # 根目录所有者设为root
    sudo chmod 755 /home/sftp_user            # 根目录需root可写
    sudo mkdir /home/sftp_user/upload         # 创建用户可写的子目录
    sudo chown sftp_user:sftpusers /home/sftp_user/upload
  4. 重启SSH服务

    sudo systemctl restart sshd

验证SFTP服务

  • 连接测试
    使用客户端(如FileZilla或终端命令):

    sftp sftp_user@服务器IP

    输入密码后应进入受限环境,仅可访问/upload目录。

  • 错误排查
    检查日志:

    tail -f /var/log/auth.log     # Debian/Ubuntu
    tail -f /var/log/secure       # CentOS/RHEL

安全加固建议

  1. 禁用root登录
    sshd_config中设置:

    PermitRootLogin no
  2. 启用密钥认证
    生成密钥对:

    Linux如何开启SFTP服务

    ssh-keygen -t ed25519

    将公钥id_ed25519.pub内容追加到用户~/.ssh/authorized_keys

  3. 更改默认端口
    修改sshd_config中的Port值(如2222),并更新防火墙规则。

  4. 定期更新系统

    sudo apt upgrade -y    # Debian/Ubuntu
    sudo yum update -y     # CentOS/RHEL

常见问题解决

  • 连接被拒绝:检查sshd服务状态及防火墙设置。
  • 目录权限错误:确保ChrootDirectory由root所有且权限为755
  • 用户无法上传文件:确认子目录(如upload)归用户所有且权限为755775

引用说明:本文配置参考OpenSSH官方文档(openssh.com/manual)及Linux权限管理标准,关键操作已通过Ubuntu 22.04/CentOS 7+环境验证,符合最小权限原则(Principle of Least Privilege),建议生产环境结合Fail2ban等工具增强防护。

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/37991.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月24日 15:15
下一篇 2025年6月24日 15:19

相关推荐

  • Linux怎么安装QQ?

    在Linux发行版中安装QQ主要有三种方式:使用腾讯官方Wine版QQ(功能有限但原生支持);通过Deepin移植版(兼容性较好,需添加软件源);或选择第三方方案如Icalingua++(功能丰富但非官方),根据系统环境选择合适方法即可。

    2025年6月30日
    7500
  • 怎么使用Linux软件,Linux软件怎么用

    在Linux中调用软件主要通过终端输入命令(如“软件名”)或图形界面菜单启动,需确保软件已安装且路径正确。

    2025年7月1日
    2400
  • linux下如何关闭行数显示

    Linux下关闭行数显示的方法因编辑器而异:如使用vim时输入:set nonumber;用less查看文件加参数-N;修改nano的配置文件~/.nanorc注释掉set linenumbers;或通过sed/awk命令处理文本去除行号

    2025年7月26日
    5700
  • 如何看 linux的cpu

    Linux中查看CPU信息可通过多种命令,使用lscpu可快速获取CPU架构、核心数、线程数等基本信息;cat /proc/cpuinfo能显示每个逻辑核心的详细参数;nproc直接输出可用处理单元数量;htop则可实时监控CPU使用情况及各核心负载

    2025年7月21日
    900
  • Linux网关怎么查

    使用ip route命令查看默认网关,执行ip route show default或简写ip r,也可通过传统命令route -n查看,网关信息在”Gateway”列。

    2025年6月12日
    2200

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN