温馨提示×

linux sftp怎样配密钥

小樊
46
2026-10-02 00:54:33
栏目: 智能运维

在 Linux 上配置 SFTP 使用密钥登录(而非密码),通常步骤如下:


一、在客户端生成密钥对

在**你自己的机器(客户端)**执行:

ssh-keygen -t rsa -b 4096

一路回车即可(可设置密码短语 passphrase,也可留空)。

生成后:

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

二、将公钥上传到 SFTP 服务器

在服务器上(假设用户为 sftpuser):

# 登录服务器后
mkdir -p ~/.ssh
chmod 700 ~/.ssh

在客户端执行(推荐方式):

ssh-copy-id sftpuser@服务器IP

或手动复制:

cat ~/.ssh/id_rsa.pub | ssh sftpuser@服务器IP "cat >> ~/.ssh/authorized_keys"

然后在服务器上:

chmod 600 ~/.ssh/authorized_keys

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

编辑服务器上的:

/etc/ssh/sshd_config

确保或添加:

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

如果 只允许 SFTP(禁止 SSH shell),可添加:

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

注意:ChrootDirectory 目录必须 root 所有且 755 权限

重启 SSH:

systemctl restart sshd

四、使用 SFTP 连接

客户端执行:

sftp sftpuser@服务器IP

如指定私钥:

sftp -i ~/.ssh/id_rsa sftpuser@服务器IP

五、常见问题

✅ 权限错误(最常见):

  • ~/.ssh → 700
  • authorized_keys → 600
  • home 目录不能组可写

✅ SELinux(CentOS/RHEL):

restorecon -Rv ~/.ssh

如果你需要 Chroot 多用户 SFTP、只传文件不能登录、或 Windows 客户端(FileZilla / WinSCP)配置,可以继续问我。

0 踩