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月17日 12:39

相关推荐

  • 如何在服务器上轻松安装Linux系统?

    制作Linux启动盘,从U盘或光盘启动服务器,在安装向导中选择服务器版本(如Ubuntu Server/CentOS),配置磁盘分区(通常需/、swap等)、网络、时区及root密码,完成基础系统安装,最后配置必要服务(如SSH)并更新系统,注意UEFI/BIOS启动设置。

    2025年5月30日
    200
  • 如何快速安装Linux虚拟机?

    安装Linux虚拟机需先下载虚拟机软件(如VirtualBox)和Linux系统ISO镜像,创建新虚拟机,分配内存、硬盘空间,加载ISO文件后启动安装程序,按提示完成分区和系统设置即可。

    2025年6月13日
    000
  • Linux如何关闭TCP连接?

    使用netstat或lsof查找占用端口的进程ID,再用kill命令终止该进程

    2025年6月23日
    000
  • Linux磁盘分区怎么操作?

    在 Linux 中,主要使用 fdisk(适用于 MBR)和 parted(支持 GPT/MBR)命令进行磁盘分区,gdisk 专用于 GPT 分区,操作前务必卸载目标磁盘并谨慎执行,避免数据丢失。

    2025年6月6日
    100
  • Linux怎么执行SQL

    在Linux中执行SQL语句主要通过命令行工具实现: ,1. **MySQL/MariaDB**:使用mysql -u 用户名 -p -e “SQL语句” ,2. **PostgreSQL**:通过psql -U 用户名 -c “SQL语句” ,3. **SQLite**:直接运行sqlite3 数据库文件 “SQL语句” ,也可将SQL写入文件,用˂ 文件重定向执行,或进入交互命令行操作。

    2025年6月14日
    000

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN