在Ubuntu系统中生成SFTP密钥对,可以按照以下步骤进行:
打开终端:
在Ubuntu中,可以通过快捷键 Ctrl + Alt + T 打开终端。
生成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 是注释信息,可以填写你的邮箱地址或其他描述。
设置密码保护(可选): 如果你希望为私钥设置密码保护,系统会提示你输入并确认密码。
将公钥复制到目标服务器:
使用 ssh-copy-id 命令将公钥复制到目标SFTP服务器的 ~/.ssh/authorized_keys 文件中。
ssh-copy-id user@remote_host
其中 user 是目标服务器上的用户名,remote_host 是目标服务器的IP地址或域名。
测试连接: 尝试通过SFTP连接到目标服务器,验证配置是否成功。
sftp user@remote_host
如果你需要更细粒度的控制,可以手动创建SFTP密钥对。
生成私钥:
openssl genpkey -algorithm RSA -out private_key.pem -aes256
这将生成一个加密的私钥文件 private_key.pem。
提取公钥:
openssl rsa -pubout -in private_key.pem -out public_key.pem
这将从私钥文件中提取公钥并保存到 public_key.pem。
配置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
创建用户组和用户: 创建一个专门用于SFTP的用户组,并将目标用户添加到该组中。
sudo groupadd sftpusers
sudo useradd -m -G sftpusers your_username
sudo passwd your_username
设置用户目录权限: 确保用户的家目录权限正确,以便SSH可以访问。
sudo chown root:root /home/your_username
sudo chmod 755 /home/your_username
配置授权密钥:
在用户的家目录下创建 .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
测试连接: 再次尝试通过SFTP连接到目标服务器,验证配置是否成功。
sftp your_username@remote_host
通过以上步骤,你应该能够在Ubuntu系统中成功生成并配置SFTP密钥对。