温馨提示×

linux sftp密钥怎么配

小樊
40
2026-10-25 13:24:36
栏目: 智能运维

在 Linux 上配置 SFTP 使用密钥登录(而非密码),一般步骤如下,适用于 OpenSSH Server(绝大多数 Linux 发行版)。


一、在客户端生成密钥对

在你自己的电脑 / 客户端执行:

ssh-keygen -t rsa -b 4096

按提示操作(可设密码,也可直接回车):

  • 默认生成:
    • 私钥:~/.ssh/id_rsa
    • 公钥:~/.ssh/id_rsa.pub

二、把公钥传到 SFTP 服务器

在客户端执行(替换 user 和 host):

ssh-copy-id user@host

如果 ssh-copy-id 不可用,可手动操作:

cat ~/.ssh/id_rsa.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

在服务器上确保权限正确:

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

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

编辑服务器配置:

sudo vi /etc/ssh/sshd_config

确保或添加以下内容:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

(可选)禁止密码登录(更安全):

PasswordAuthentication no

修改后重启 SSH:

sudo systemctl restart sshd

四、使用 SFTP 密钥登录

1️⃣ 命令行方式

sftp -i ~/.ssh/id_rsa user@host

2️⃣ 指定端口

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

五、仅允许 SFTP(可选,限制用户)

若希望用户只能用 SFTP,不能 SSH 登录:

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    PasswordAuthentication no

注意:

  • ChrootDirectory 属主必须是 root
  • 用户目录权限应为 755
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser

六、常见问题排查

问题 原因
还是要密码 公钥未写入 authorized_keys
Permission denied .ssh 或 authorized_keys 权限不对
无法登录 SELinux / 家目录加密
sftp 连不上 ForceCommand internal-sftp 配置错误

查看日志:

sudo tail -f /var/log/secure
# 或
sudo journalctl -u sshd -f

如果你告诉我:

  • 用的 Linux 发行版(CentOS / Ubuntu / Debian)
  • 是想 自己连服务器,还是 给别人开 SFTP 账号

我可以给你更精确的配置示例。

0 踩