温馨提示×

linux sftp怎样免密登录

小樊
47
2026-09-23 07:12:17
栏目: 智能运维

在 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_server_ip

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

方法 2:手动复制

在客户端执行:

cat ~/.ssh/id_rsa.pub

登录服务器:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
vi ~/.ssh/authorized_keys

把公钥内容粘贴进去,然后:

chmod 600 ~/.ssh/authorized_keys

三、测试 SFTP 免密登录

sftp user@sftp_server_ip

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


四、常见问题排查

1. 权限问题(非常重要)

服务器上权限必须正确:

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

2. SSH 配置是否允许公钥登录

服务器 /etc/ssh/sshd_config 中:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no  # 可禁用密码(可选)

修改后重启:

systemctl restart sshd

3. SELinux 导致失败(CentOS/RHEL)

restorecon -Rv ~/.ssh

五、仅限制 SFTP(不能 SSH 登录,可选)

若只想让用户用 SFTP 不能登录 shell:

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

如果你需要 脚本自动 SFTP、Windows 到 Linux、或 Jumpserver/堡垒机场景,可以告诉我具体环境。

0 踩