温馨提示×

linux sftp怎么免密

小樊
44
2026-09-08 01:19:14
栏目: 智能运维

在 Linux 下实现 SFTP 免密登录,本质就是使用 SSH 密钥认证(SFTP 基于 SSH)。下面是最常见、最标准的做法。


一、生成 SSH 密钥(客户端)

本地机器执行:

ssh-keygen -t rsa -b 4096

一路回车即可(默认生成在):

~/.ssh/id_rsa        # 私钥
~/.ssh/id_rsa.pub    # 公钥

✅ 如果想设置密码(passphrase)可以不留空,但那就不是完全“无交互”了。


二、把公钥拷贝到服务器

方法 1:自动拷贝(推荐)

ssh-copy-id user@server_ip

输入一次密码后,以后就免密了。


方法 2:手动拷贝

如果没 ssh-copy-id

scp ~/.ssh/id_rsa.pub user@server_ip:/tmp/

在服务器上执行:

mkdir -p ~/.ssh
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

三、测试 SFTP 免密

sftp user@server_ip

✅ 不再提示输入密码,就说明成功。


四、常见问题排查

1️⃣ 权限不对(最常见)

服务器上必须保证:

~ 权限不能是 777
~/.ssh 权限 700
~/.ssh/authorized_keys 权限 600

修复命令:

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

2️⃣ SSH 配置限制了密钥登录

检查服务器 /etc/ssh/sshd_config

PubkeyAuthentication yes
PasswordAuthentication no   # 可以 later 关

修改后重启 SSH:

systemctl restart sshd

3️⃣ SELinux(CentOS/RHEL)

restorecon -Rv ~/.ssh

五、只限制 SFTP(可选)

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

Match User sftpuser
    ChrootDirectory /data/sftp
    ForceCommand internal-sftp

六、脚本示例(免密自动传文件)

sftp user@server <<EOF
put file.txt /remote/path/
bye
EOF

如果你愿意,可以告诉我:

  • Linux → Linux 还是 Windows → Linux
  • 是否要 脚本自动化
  • 是否要 限制用户只能 SFTP

我可以直接给你一套完整配置。

0