温馨提示×

linux sftp怎样免密登

小樊
43
2026-10-22 13:57:42
栏目: 智能运维

在 Linux 下实现 SFTP 免密登录,本质就是使用 SSH 密钥认证,因为 SFTP 是基于 SSH 的。下面是完整步骤:


一、在客户端生成密钥(如果已有可跳过)

ssh-keygen -t rsa -b 4096

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

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

二、把公钥拷贝到 SFTP 服务器

方法 1:使用 ssh-copy-id(推荐)

ssh-copy-id user@sftp服务器IP

输入一次密码后,以后即可免密。

方法 2:手动复制

在客户端执行:

cat ~/.ssh/id_rsa.pub

登录服务器,把内容追加到:

~/.ssh/authorized_keys

并确认权限:

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

三、测试 SFTP 免密登录

sftp user@sftp服务器IP

如果不再提示输入密码,说明成功。


四、常见问题排查

1. 权限问题(最常见)

服务器上:

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

用户家目录不能对其他用户可写:

chmod 755 ~

2. SELinux 影响(CentOS/RHEL)

restorecon -Rv ~/.ssh

3. SSH 配置限制

检查服务器 /etc/ssh/sshd_config:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

修改后重启:

systemctl restart sshd

五、仅允许 SFTP(可选)

如果只想让用户 只能 SFTP,不能 SSH 登录:

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

如果你有:

  • 使用 Windows 客户端
  • 使用 跳板机 / 堡垒机
  • 使用 非标准端口

可以告诉我,我可以给你更具体的方案。

0 踩