![为什么 SSH 服务器说“authorized_keys 不是常规文件”?](https://linux22.com/image/82351/%E4%B8%BA%E4%BB%80%E4%B9%88%20SSH%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AF%B4%E2%80%9Cauthorized_keys%20%E4%B8%8D%E6%98%AF%E5%B8%B8%E8%A7%84%E6%96%87%E4%BB%B6%E2%80%9D%EF%BC%9F.png)
我一直在尝试使用 puttygen 生成的密钥配置登录,以便我可以禁用密码身份验证。
我从 puttygen 保存了私钥并将公共部分复制到我的 .ssh/authorized_keys 中,如下所示:
ssh-rsa AAAAB3Nza[...]1qRQ==
这是我在 sshd_config 中更改的内容
AuthorizedKeysFile .ssh/authorized_keys
UsePAM no
但每次我尝试用我的密钥登录时,服务器都会拒绝它。
日志:
error: key_read: type mismatch: encoding error
sshd[735]: error: key_from_blob: can't read key type
sshd[735]: error: key_read: key_from_blob
User root authorized keys /root/.ssh/authorized_keys is not a regular file
stat /root/.ssh/authorized_keys
说:
68 3451018 drw------- 2 root wheel 6903510 512 "Jan 28 18:12:08 2016" "Jan 28 17:40:50 2016" "Jan 28 17:46:22 2016" "Jan 28 17:40:42 2016" 32768 8 0 /root/.ssh/.authorized_keys
使用 FreeBSD 9.3
答案1
正如 Ulrich Schwarz 所指出的,.ssh/authorized_keys
必须是常规文件。就您而言,它看起来像是一个目录。您需要删除该目录并创建一个包含密钥的文本文件。
答案2
我发现 puttygen 生成的密钥在我所做的几乎每一次尝试中都很麻烦。我不太清楚原因和方式,但我的 Linux 和其他旧版 UNIX 系统不接受它生成的文件格式。
我的建议是,一旦您进入服务器,请使用命令生成密钥
ssh-keygen -t rsa
如果需要,请输入密码短语以及文件名和位置。然后将生成的公钥附加到授权密钥文件的末尾。将私钥复制(ftp 或 scp)到您的 PC。打开 puttygen 并使用导入密钥选项。在腻子界面上,使用新导入的密钥。
这种方法一直对我有用