在 Linux 下实现 SFTP 免密登录,本质就是使用 SSH 密钥认证,因为 SFTP 是基于 SSH 的。下面是完整步骤:
ssh-keygen -t rsa -b 4096
一路回车即可,默认生成:
~/.ssh/id_rsa~/.ssh/id_rsa.pubssh-copy-id user@sftp服务器IP
输入一次密码后,以后即可免密。
在客户端执行:
cat ~/.ssh/id_rsa.pub
登录服务器,把内容追加到:
~/.ssh/authorized_keys
并确认权限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
sftp user@sftp服务器IP
如果不再提示输入密码,说明成功。
服务器上:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
用户家目录不能对其他用户可写:
chmod 755 ~
restorecon -Rv ~/.ssh
检查服务器 /etc/ssh/sshd_config:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
修改后重启:
systemctl restart sshd
如果只想让用户 只能 SFTP,不能 SSH 登录:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
PasswordAuthentication no
如果你有:
可以告诉我,我可以给你更具体的方案。