温馨提示×

ubuntu sftp怎样配置密钥

小樊
51
2026-10-14 02:46:20
栏目: 智能运维

在 Ubuntu 上配置 SFTP 使用密钥登录(而不是密码),一般步骤如下:


一、在客户端生成密钥(如果还没有)

在**你自己的电脑(客户端)**执行:

ssh-keygen -t rsa -b 4096

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

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

二、把公钥传到 Ubuntu 服务器

在客户端执行:

ssh-copy-id user@server_ip

替换 user 和 server_ip 为你的服务器用户名和 IP

如果 ssh-copy-id 不可用,也可以手动复制:

cat ~/.ssh/id_rsa.pub

然后登录服务器,粘贴到:

~/.ssh/authorized_keys

并修复权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

三、服务器 SSH 配置(关键)

编辑 SSH 配置文件:

sudo nano /etc/ssh/sshd_config

确保以下配置:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no   # 禁止密码登录(可选但推荐)

如果是 仅 SFTP 用户(不能 SSH 登录),可加:

Match Group sftpusers
    ChrootDirectory /home/%u
    ForceCommand internal-sftp
    PasswordAuthentication no
    AllowTcpForwarding no

创建 SFTP 用户示例:

sudo adduser sftpuser
sudo usermod -aG sftpusers sftpuser
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser

四、重启 SSH 服务

sudo systemctl restart ssh

五、使用 SFTP 测试

客户端执行:

sftp user@server_ip

如果不再提示输入密码,说明配置成功 ✅


常见问题

1. 权限错误导致无法登录

  • .ssh 必须是 700
  • authorized_keys 必须是 600
  • 家目录不能给其他用户写权限

2. Chroot 目录必须 root 拥有

sudo chown root:root /home/sftpuser

如果你需要 限定目录、多用户、或者 Windows 客户端配置,可以告诉我具体场景。

0 踩