温馨提示×

ubuntu sftp怎么用密钥

小樊
47
2026-10-11 04:55:40
栏目: 智能运维

在 Ubuntu 上使用 SFTP + 密钥登录(而不是密码)一般分为以下几步:


一、在本地生成 SSH 密钥(如果还没有)

在本地 Ubuntu 机器上执行:

ssh-keygen -t rsa -b 4096

一路回车即可,默认会生成:

  • 私钥:~/.ssh/id_rsa
  • 公钥:~/.ssh/id_rsa.pub

(也可以指定名字,如 sftp_key)


二、把公钥放到 SFTP 服务器

方法 1:使用 ssh-copy-id(最方便)

ssh-copy-id user@sftp.server.com

输入一次密码后,公钥会自动写入服务器的:

~/.ssh/authorized_keys

方法 2:手动复制

在本地查看公钥:

cat ~/.ssh/id_rsa.pub

登录服务器后,执行:

mkdir -p ~/.ssh
echo "粘贴的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

三、使用 SFTP 密钥登录

1️⃣ 命令行 SFTP

sftp -i ~/.ssh/id_rsa user@sftp.server.com

如果密钥有密码(passphrase),会提示输入。


2️⃣ 指定端口(如 2222)

sftp -P 2222 -i ~/.ssh/id_rsa user@sftp.server.com

四、禁止密码登录(可选,更安全)

在 SFTP 服务器 上修改:

sudo nano /etc/ssh/sshd_config

确保有以下配置:

PubkeyAuthentication yes
PasswordAuthentication no

重启 SSH:

sudo systemctl restart ssh

⚠️ 确认密钥能登录后再关闭密码!


五、使用 FTP 客户端(如 FileZilla)

  1. 打开 FileZilla
  2. 站点管理 → 新站点
  3. 协议:SFTP
  4. 登录类型:密钥文件
  5. 用户:user
  6. 密钥文件:选择 ~/.ssh/id_rsa

六、常见问题

❌ 权限太开放

Permissions 0644 for 'id_rsa' are too open

解决:

chmod 600 ~/.ssh/id_rsa

❌ 仍提示输入密码

  • 检查服务器 authorized_keys 权限
  • 检查 SELinux / 家目录权限
  • 查看日志:
sudo tail -f /var/log/auth.log

如果你愿意,可以告诉我:

  • 是 客户端还是服务器配置
  • 用的是 命令行 / FileZilla / 脚本
  • 是否 Chroot 限制目录

我可以给你更针对性的配置示例。

0 踩