ubuntu

ubuntu如何生成sftp密钥对

小樊
40
2025-04-08 05:32:37
栏目: 智能运维

在Ubuntu系统中生成SFTP密钥对,可以按照以下步骤进行:

方法一:使用SSH密钥对

  1. 打开终端: 在Ubuntu中,可以通过快捷键 Ctrl + Alt + T 打开终端。

  2. 生成SSH密钥对: 使用 ssh-keygen 命令生成SSH密钥对。默认情况下,这将在 ~/.ssh 目录下创建 id_rsa(私钥)和 id_rsa.pub(公钥)文件。

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    

    这里 -t rsa 指定使用RSA算法,-b 4096 指定密钥长度为4096位,-C 是注释信息,可以填写你的邮箱地址或其他描述。

  3. 设置密码保护(可选): 如果你希望为私钥设置密码保护,系统会提示你输入并确认密码。

  4. 将公钥复制到目标服务器: 使用 ssh-copy-id 命令将公钥复制到目标SFTP服务器的 ~/.ssh/authorized_keys 文件中。

    ssh-copy-id user@remote_host
    

    其中 user 是目标服务器上的用户名,remote_host 是目标服务器的IP地址或域名。

  5. 测试连接: 尝试通过SFTP连接到目标服务器,验证配置是否成功。

    sftp user@remote_host
    

方法二:手动创建SFTP密钥对

如果你需要更细粒度的控制,可以手动创建SFTP密钥对。

  1. 生成私钥

    openssl genpkey -algorithm RSA -out private_key.pem -aes256
    

    这将生成一个加密的私钥文件 private_key.pem

  2. 提取公钥

    openssl rsa -pubout -in private_key.pem -out public_key.pem
    

    这将从私钥文件中提取公钥并保存到 public_key.pem

  3. 配置SSH服务器: 编辑目标服务器上的 /etc/ssh/sshd_config 文件,确保以下配置项存在并正确设置:

    Subsystem sftp internal-sftp
    Match Group sftpusers
        ChrootDirectory %h
        ForceCommand internal-sftp
        AllowTcpForwarding no
        X11Forwarding no
    

    然后重启SSH服务:

    sudo systemctl restart sshd
    
  4. 创建用户组和用户: 创建一个专门用于SFTP的用户组,并将目标用户添加到该组中。

    sudo groupadd sftpusers
    sudo useradd -m -G sftpusers your_username
    sudo passwd your_username
    
  5. 设置用户目录权限: 确保用户的家目录权限正确,以便SSH可以访问。

    sudo chown root:root /home/your_username
    sudo chmod 755 /home/your_username
    
  6. 配置授权密钥: 在用户的家目录下创建 .ssh 目录,并将公钥添加到 authorized_keys 文件中。

    mkdir -p /home/your_username/.ssh
    echo "your_public_key" >> /home/your_username/.ssh/authorized_keys
    chmod 600 /home/your_username/.ssh/authorized_keys
    
  7. 测试连接: 再次尝试通过SFTP连接到目标服务器,验证配置是否成功。

    sftp your_username@remote_host
    

通过以上步骤,你应该能够在Ubuntu系统中成功生成并配置SFTP密钥对。

0
看了该问题的人还看了