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

我正在尝试使用密钥文件而不是用户名/密码来设置ssh身份validation。 客户端是运行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文件中(在我自己的主文件夹中)。 在连接> SSH> Auth下的PuTTY中,我输入了它在客户端上生成的私钥的路径并保存了会话设置。

我重新启动了ssh服务器

 sudo service ssh restart 

现在,如果我在PuTTY中加载配置文件(我validation私钥仍然在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/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

谢谢你的帮助!

我刚遇到这个问题。 尽管配置设置正确,如此线程中已经提到的(authorized_keys上的权限等),但事实certificate我的公钥有错误的格式。 它的forms是:

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

哪个不起作用。 但是让它以下面的forms工作:

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

问题是windows使用的是与linux不同的新行 ,因此在将密钥从windows复制到linux时,在行的末尾有一个\ n \ n你在编辑器中无法在linux上看到。

如果您拖尾/var/log/auth.log并尝试登录,则错误如下:

sshd:错误:key_read:uudecode AAAAB3N [….] == \ n

如果您在Windows上更改密钥,使其在一行中没有新行 ,然后将其复制到Linux,它应该可以工作(为我做了诀窍)。

我不得不更改主目录的权限

 chmod 700 ~ 

我不得不将〜/ .ssh目录权限从770更改为700,将〜/ .ssh / authorized_keys文件权限从660更改为600。

出于某种原因,删除组权限为我解决了这个问题。

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

~/.ssh/authorized_keys文件要求密钥全部在一行上。 如果您在上面的粘贴中添加了多行,请尝试连接这些行。

除了上述所有答案外,请确保正确复制并粘贴puttygen的密钥!

如果只是双击大量的键字符串来选择它,则可能无法获得整个字符串,因为文本框会在某些字符上分割行,例如+ ,这样就不会在+之后选择文本。字符(由于文本框太小而无法看到)。 请务必手动选择整个字符串,从ssh-rsa到文本框的最末端。

有时它可能是将公钥放在一行上的问题,这种方法似乎可以解决它

 echo 'the content of the public key' > /root/.ssh/authorized_keys 

对我来说问题是我创建了~/.ssh/authorized_keys使用root所以root拥有。 我不得不chown sshuser:sshuser ~/.ssh/authorized_keys然后它开始工作

我也遇到了这个错误,并通过将authorized_keys文件的权限更改为600来解决它。

 chmod 600 ~/.ssh/authorized_keys 

这对我有用:

puttygen ,在生成密钥后,请确保复制并粘贴顶部字段中的信息以进入authorized_keys文件。 如果将公钥保存到客户端计算机,然后将其打开,则文本与puttygen屏幕顶部的文本不同。 同样,请确保将puttygen屏幕顶部的文本(在创建密钥后)复制并粘贴到authorized_keys文件中,该文件应位于~/.ssh

常见错误是人们使用文本编辑器(如Vim)并在激活“插入”之前粘贴复制的文本(在粘贴之前按下Vim中的+ i)

事实上,我将authorized_keys的许可改为644 ,然后问题解决了。

 chmod 644 ~/.ssh/authorized_keys 

我以root身份登录时创建了.ssh和authorized_keys文件,这给了错误的权限。 它还将所有文件放在根目录下。 我认为这是“服务器拒绝密钥”的许多问题的根源。

将这些文件的所有权更改为您想要的用户并不是一个好习惯,因此我回顾了我的步骤并确保我以用户身份登录,并希望再次使用SSH并创建.ssh和authorized_keys。 错误。

将Win7连接到Xubuntu 15.04服务器的方向: 如何使用Putty连接到VPS创建SSH密钥