debian

SFTP用户认证如何设置

小樊
49
2025-08-29 05:46:14
栏目: 编程语言

SFTP用户认证主要有密码认证和密钥认证两种方式,以下是具体设置步骤:

密码认证

  1. 安装OpenSSH服务器
    • CentOS:sudo yum install openssh-server
    • Debian/Ubuntu:sudo apt update && sudo apt install openssh-server
  2. 创建SFTP用户
    sudo groupadd sftpusers  # 创建用户组
    sudo useradd -g sftpusers -s /sbin/nologin sftpuser  # 创建用户并禁止SSH登录
    sudo passwd sftpuser  # 设置密码
    
  3. 配置SSH文件
    编辑/etc/ssh/sshd_config,添加以下内容:
    Subsystem sftp internal-sftp
    Match Group sftpusers
        ChrootDirectory %h  # 限制用户只能访问主目录
        ForceCommand internal-sftp
        AllowTcpForwarding no
        X11Forwarding no
    
    确保PasswordAuthentication yes(默认开启)。
  4. 设置目录权限
    sudo mkdir /home/sftpuser/uploads  # 创建可写目录
    sudo chown root:root /home/sftpuser  # 主目录属主为root
    sudo chmod 755 /home/sftpuser
    sudo chown sftpuser:sftpusers /home/sftpuser/uploads  # 可写目录属主为用户
    
  5. 重启SSH服务
    sudo systemctl restart sshd

密钥认证(更安全,推荐)

  1. 生成密钥对(客户端)
    ssh-keygen -t rsa -b 4096(默认保存到~/.ssh/id_rsa~/.ssh/id_rsa.pub
  2. 上传公钥到服务器
    ssh-copy-id sftpuser@server_ip(或手动复制公钥到服务器~/.ssh/authorized_keys
  3. 配置SSH服务器
    /etc/ssh/sshd_config中添加:
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    PasswordAuthentication no  # 可选:禁用密码认证
    
  4. 重启SSH服务
    sudo systemctl restart sshd

验证连接

使用SFTP客户端(如FileZilla或命令行)连接:
ssh sftpuser@server_ip(密码认证需输入密码,密钥认证需指定私钥路径)

安全提示

0
看了该问题的人还看了