我已经build立了与ProFTPD的mod_sftp,由于某种原因,当我连接时仍然会提示我input密码。
这是我的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 。
SFTPAuthorizedUserKeys的当前值设置为使用授权密钥的每个用户文件。 我猜想对于给定的用户,我们以jsmith为例,他们的密钥需要进入一个名为/ etc / proftpd / authorized_keys / jsmith的文件。
为了让你的当前设置工作,请尝试将SFTPAuthorizedUserKeys的值更改为/ etc / proftpd / authorized_keys。
有关更多详细信息,请参阅http://www.proftpd.org/docs/contrib/mod_sftp.html#SFTPAuthorizedUserKeys 。
我遇到过这种情况,它是由ssh-keygen中看起来像是ssh-rsa格式密钥转换为RFC-4716密钥格式时出现的错误引起的: Comment头太长。
要确认是否发生了这种情况,请在您的proftpd.conf文件中启用SFTPLog选项,然后在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)
看看有问题的关键,你会看到它如何突出:
用你select的文本编辑器修剪掉,关键authentication应该开始工作。 使用bash它看起来像这样,其中user.pub是您的密钥文件:
cut -c 1-72 user.pub | sed '/^Comment: "[^"]*$/ s/$/"/' > user.pub
如果您想保留整个评论,则需要跳过该行的末尾并将其放在下一行。 有关如何重新格式化注释,请参阅RFC 4716的示例部分 。
最后,我在CentOS 6.9上使用ssh-keygen来解决这个问题。 Mac OS Sierra上的版本正确地截断了关键注释以避免此问题。