尝试使用密钥文件进行 ssh 身份验证:服务器拒绝我们的密钥

尝试使用密钥文件进行 ssh 身份验证:服务器拒绝我们的密钥

我正在尝试使用密钥文件而不是用户名/密码来设置 ssh 身份验证。客户端是运行 PuTTY 的 Windows 机器,服务器是 Ubuntu 12.04 LTS 服务器。

我下载了 puttygen.exe 并让它生成密钥对。在/etc/ssh/sshd_config其中有以下行:

AuthorizedKeysFile %h/.ssh/authorized_keys

我客户的公钥文件上有这样的内容:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "[email protected]"
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAr3Qo6T5XU06ZigGOd3eKvfBhFLhg5kWv8lz6
qJ2G9XCbexlPQGanPhh+vcPkhor6+7OmB+WSdHeNO652kTofnauTKcTCbHjsT7cJ
GNrO8WVURRh4fabknUHPmauerWQZ6TgRPGaz0aucU+2C+DUo2SKVFDir1vb+4u83
[email protected]
---- END SSH2 PUBLIC KEY ----

我将“ssh-rsa AAA”部分复制到“[电子邮件保护]“并将其放在我服务器上的文件中~/.ssh/authorized_keys(在我自己的主文件夹中)。在 PuTTY 中的连接 > SSH > Auth 下,我输入了它在我的客户端上生成的私钥的路径并保存了会话设置。

我使用以下命令重启了 ssh 服务器

sudo service ssh restart

现在,如果我在 PuTTY 中加载配置文件(我已验证私钥仍然在“连接”>“SSH”>“身份验证”中,并且路径正确)并运行配置文件,它会显示

Server refused our key

我尝试将公钥放在目录 ./ssh/authorized_keys/但这没用,所以我用./ssh/authorized_keys文件,将密钥粘贴到其中。我还尝试在服务器上生成私钥/公钥对,将公钥放入其中,./ssh/authorized_files并在客户端的 PuTTY 中加载私钥。重新启动服务器也无济于事。

我发现可以将密钥放在用户主文件夹之外的地方来解决错误,但这仅在主文件夹被加密时才有用,而这个文件夹并未加密。

还尝试生成 4096 位密钥,认为 1024 也许太短了。

我怎样才能让它工作?谢谢!

编辑:

好的,/var/log/auth.log说:

sshd: Authentication refused: bad ownership or modes for directory /home/vorkbaard/.ssh

Google 告诉我~/.ssh/应该是 700,而~/.ssh/authorized_keys应该是 600,所以我就照做了。现在/var/log/auth.log显示:

sshd: error: key_read: uudecode AAAAB3N [etc etc etc until about 3/4 of my public key]

答案1

好的,它已经修复,但我看不出这与我已经尝试过的有什么不同。

我做了什么:

  • 使用 puttygen.exe 生成密钥对(长度:1024 位)
  • 在 PuTTY 配置文件中加载私钥
  • 输入公钥~/.ssh/authorized_keys 在一行中 (和您的密钥ssh-rsa {your_public_key}之间不能有超过一个空格)ssh-rsa
  • chmod 700 ~/.ssh
  • chmod 600 ~/.ssh/authorized_keys
  • chown $USER:$USER ~/.ssh -R
  • 改变/etc/ssh/sshd_config,使其包含AuthorizedKeysFile %h/.ssh/authorized_keys
  • sudo service ssh restart

如需进行故障排除,请执行以下操作# tail -f /var/log/auth.log

感谢您的帮助!

答案2

我刚刚遇到了这个问题。尽管配置设置正确,正如本帖中提到的那样(authorized_keys 上的权限等),但事实证明我的公钥格式错误。它的形式如下:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "imported-openssh-key"
AAAAB3NzaC1yc2EAAAADAQABAAABAQDUoj0N3vuLpeviGvZTasGQ...
... lPmTrOfVTxI9wjax2JvKcyE0fiNMzXO7qiHJsQM9G9ZB4Lkf71kT
---- END SSH2 PUBLIC KEY ----

这不起作用。但是以以下形式可以让它工作:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDU.....j0N3vuLpeviGvZTasGQa1rcJiPXQMW7v3uurb+n94B9MQaaWR0odsg5DJQL92TNenOda5BO1nd08y6+sdLQmHXExTz6X8FzgoVsAkEl3RscxcxHUksiKA9JfTo38vQvG/bPxIHMCuSumCQVA1laf3rO/uOrkcB7iMWhaoi1/z6AbFtPzeh7xjGfInMWwtBI0CsHSRF73VWIxT26w0P+KjafCjSn/7vDO1bT8QHujSQelU/GqaVEvbbvPl1a7POVjKgHLNekolwRKfNeVEewcnmZaoqfHgOKlPmTrOfVTxI9wjax2JvKcyE0fiNMzXO7qiHJsQM9G9ZB4Lkf71kT UserName@HOSTNAME

答案3

我必须更改主目录的权限

chmod 700 ~

答案4

我必须将 ~/.ssh 目录权限从 770 更改为 700,并将 ~/.ssh/authorized_keys 文件权限从 660 更改为 600。

由于某种原因,删除组权限对我来说解决了这个问题。

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

相关内容