ProFTPD 公钥认证,仍然要求输入密码

ProFTPD 公钥认证,仍然要求输入密码

我已经使用 ProFTPD 设置了 mod_sftp,但由于某种原因,它在连接时仍然提示我输入密码。

这是我的conf.d/myserver文件:

SFTPEngine on
SFTPLog /var/log/sftp.log
Port 7770
SFTPHostKey /etc/ssh/ssh_host_rsa_key
SFTPHostKey /etc/ssh/ssh_host_dsa_key
SFTPAuthorizedUserKeys file:/etc/proftpd/authorized_keys/%u
SFTPCompression delayed
MaxLoginAttempts 6
DefaultRoot ~
Umask 002
CreateHome on 770 dirmode 770

用户的公钥在 中/etc/proftpd/authorized_keys

答案1

ssh-keygen我遇到过这种情况,这是由于将 ssh-rsa 格式密钥转换为 RFC-4716 密钥格式时出现的错误引起的:评论标头太长。

要确认这种情况是否发生在您身上,请在文件中启用 SFTPLog 选项proftpd.conf,然后在 SFTP 日志文件中您将看到如下行,特别是“行太长”部分:

Jul 25 19:11:25 mod_sftp/0.9.7[16355]: public key fingerprint: 77:fa:c7:d6:da:b9:99:6f:9d:5f:74:30:ba:09:4f:e9
Jul 25 19:11:25 mod_sftp/0.9.7[16355]: line too long (74) on line 1 of '/etc/proftpd.d/authorized_keys/myusername'
Jul 25 19:11:25 mod_sftp/0.9.7[16355]: Make sure that '/etc/proftpd.d/authorized_keys/myusername' is a RFC4716 formatted key
Jul 25 19:11:25 mod_sftp/0.9.7[16355]: error base64-decoding key data in '/etc/proftpd.d/authorized_keys/myusername'
Jul 25 19:11:25 mod_sftp/0.9.7[16355]: error comparing keys from '/etc/proftpd.d/authorized_keys/myusername': Invalid argument
Jul 25 19:11:25 mod_sftp/0.9.7[16355]: sending userauth failure; remaining userauth methods: publickey,password
Jul 25 19:11:29 mod_sftp/0.9.7[16355]: disconnecting client (received EOF)

看一下有问题的键,您就会发现它是如何突出的: 多余的行文本

使用您选择的文本编辑器将其删除,密钥验证应该开始工作。使用 bash 它看起来像这样,其中 user.pub 是您的密钥文件:

cut -c 1-72 user.pub | sed '/^Comment: "[^"]*$/ s/$/"/' > user.pub

如果你想保留整个注释,你需要转义行尾并将其放在下一行。请参阅RFC 4716 的示例部分关于如何重新格式化评论。

最后,我在 CentOS 6.9 上使用时遇到了这个问题ssh-keygen。我在 Mac OS Sierra 上使用的版本会正确截断关键注释以避免出现此问题。

答案2

SFTPAuthorizedUserKeys 的当前值设置为使用授权密钥的每个用户文件。我猜想对于给定用户(让我们以 jsmith 为例),他们的密钥需要放入名为 /etc/proftpd/authorized_keys/jsmith 的文件中。

为了使您当前的设置正常工作,请尝试将 SFTPAuthorizedUserKeys 的值更改为 /etc/proftpd/authorized_keys。

http://www.proftpd.org/docs/contrib/mod_sftp.html#SFTPAuthorizedUserKeys了解更多详情。

相关内容