温馨提示×

Ubuntu SFTP如何生成密钥对

小樊
55
2026-08-17 02:19:00
栏目: 智能运维

在 Ubuntu 上,可以使用 OpenSSH 自带的工具来生成 SFTP(SSH)密钥对。下面是常见、标准的做法。


一、生成 SSH 密钥对(默认即可用于 SFTP)

1️⃣ 生成密钥(推荐 ED25519)

ssh-keygen -t ed25519 -C "your_email@example.com"

如果系统较老(不支持 ed25519),可用 RSA:

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

2️⃣ 按提示操作

示例过程:

Enter file in which to save the key (/home/user/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
  • 路径:默认即可(回车)
  • 密码(passphrase):建议设置(更安全)

生成后你会得到两个文件:

~/.ssh/id_ed25519      # 私钥(自己保留,不能泄露)
~/.ssh/id_ed25519.pub  # 公钥(放到服务器)

二、将公钥部署到 SFTP 服务器

1️⃣ 登录到服务器

ssh user@server_ip

2️⃣ 创建 .ssh 目录并设置权限

mkdir -p ~/.ssh
chmod 700 ~/.ssh

3️⃣ 将公钥写入 authorized_keys

nano ~/.ssh/authorized_keys

粘贴你本地的 公钥内容(即 id_ed25519.pub 里的内容)

4️⃣ 设置权限(非常重要)

chmod 600 ~/.ssh/authorized_keys

三、使用私钥连接 SFTP

本地连接服务器

sftp -i ~/.ssh/id_ed25519 user@server_ip

如果没有设置 passphrase,将直接登录。


四、禁用密码登录(提高安全性,可选)

编辑服务器 SSH 配置:

sudo nano /etc/ssh/sshd_config

确保以下配置存在并正确:

PubkeyAuthentication yes
PasswordAuthentication no

重启 SSH 服务:

sudo systemctl restart ssh

⚠️ 确认密钥登录成功后再关闭密码登录


五、常见问题

❓ 权限错误导致无法登录

服务器上必须保证:

~/.ssh 权限 = 700
~/.ssh/authorized_keys 权限 = 600

❓ Windows 用户

  • 可用 WSL
  • 或直接用 PuTTY / MobaXterm 生成密钥

六、总结(最简流程)

ssh-keygen -t ed25519
ssh-copy-id user@server_ip   # 自动部署公钥(推荐)
sftp user@server_ip

如果你需要 仅 SFTP、禁止 SSH shell,或 多用户 chroot SFTP,我也可以继续帮你配置。

0