在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密钥对。