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

Modified on: Sat, 09 Jun 2018 12:02:23 +0800

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

我下载了puttygen.exe并生成了密钥对。在/etc/ssh/sshd_config中我有这一行:

AuthorizedKeysFile %h/.ssh/authorized_keys

在我客户的公钥文件中,它说:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "my@email.address.com"
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAr3Qo6T5XU06ZigGOd3eKvfBhFLhg5kWv8lz6
qJ2G9XCbexlPQGanPhh+vcPkhor6+7OmB+WSdHeNO652kTofnauTKcTCbHjsT7cJ
GNrO8WVURRh4fabknUHPmauerWQZ6TgRPGaz0aucU+2C+DUo2SKVFDir1vb+4u83
AV1pKxs=my@email.address.com
---- END SSH2 PUBLIC KEY ----

我将部件从“ssh-rsa AAA”复制到“my@email.address.com”并将其放在我服务器上的~/.ssh/authorized_keys文件中(我自己的) homefolder)。在Connection>下的PuTTY中SSH>验证我输入了它在客户端上生成的私钥的路径并保存了会话设置。

我用

重新启动了ssh服务器

sudo service ssh restart

现在,如果我在PuTTY中加载配置文件(我验证私钥仍然在Connection> SSH> Auth并且路径正确)并运行配置文件,它说

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

谷歌告诉我~/.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]

最佳答案

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

我做了什么:

  • 使用puttygen.exe(长度:1024位)生成密钥对
  • 在PuTTY个人资料中加载私钥
  • 在一行~/.ssh/authorized_keys 中输入公钥(需要以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

感谢您的帮助!


相关问答

添加新评论