![尝试使用密钥文件进行 ssh 身份验证:服务器拒绝我们的密钥](https://linux22.com/image/1115475/%E5%B0%9D%E8%AF%95%E4%BD%BF%E7%94%A8%E5%AF%86%E9%92%A5%E6%96%87%E4%BB%B6%E8%BF%9B%E8%A1%8C%20ssh%20%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%EF%BC%9A%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%8B%92%E7%BB%9D%E6%88%91%E4%BB%AC%E7%9A%84%E5%AF%86%E9%92%A5.png)
我正在尝试使用密钥文件而不是用户名/密码来设置 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