ssh-copy-id-权限被拒绝(公钥)


30

我想设置到具有虚拟机的计算机中的mysql服务器的ssh隧道。如果重新启动计算机,则隧道也必须工作。

因此可以说A是装有linux软件的计算机。B-计算机A中的虚拟机。

MySQL在B中。

C-是计算机A中的一个虚拟机,它想连接到B中的MySQL。

现在通过这篇文章:http : //www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/

我尝试将公钥复制到远程服务器。我想我需要将其复制到计算机A。

ssh-copy-id -i id_rsa.pub.bak [user]@[IP of A] -p [port of A]
Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).

现在,我尝试输入文件id_rsa.pub.bak的密码。它否认了。

然后我看到它使用了/home/[user]/.ssh/id_rsa中的密钥,该密钥与我要复制的公共密钥不同,我的意思是私钥当然不同,但是我的意思是我复制了另一个私钥。所以我尝试使用它的密码。也否认了。

我该如何调试为什么密码短语被拒绝?

更新资料

根据评论,我创建了一个新的名为id_rsa.pub的公共文件,现在所有内容都在一行中

并运行并仍然出现错误。

ssh-copy-id -i id_rsa.pub [host and port] -vvv
Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).

更新资料

检查了A计算机中.ssh文件夹和authorized_keys文件的权限-它们分别是700和600,因此注释中说它们很好。

更新资料

尝试在计算机上设置密码身份验证为“是”,然后重新启动服务。重新启动,因为答案不起作用,它写了无法识别的sshd,所以我使用以下命令重新启动:

sudo /etc/init.d/ssh restart

然后在C机上再次尝试复制到A机。

ssh-copy-id -i id_rsa.pub [user@host] -p [port] -v

仍然一样:

Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).

如果我要手动将密钥复制到authorized_keys,则会看到公钥已存在,与我要复制的公钥相同。我问我的同事,他说他没有复制。所以我什至不知道它怎么可能在那里。

好的,如果在那里,那就太好了,但是如果呆在那里,则不输入密码就不会让我与ssh连接。但是我能够输入密码。因此,这里显然仍然存在问题。我要复制的密钥是空密码。当我与ssh连接时-输入的密码不为空。

相同的公钥不能接受空密码短语和非空密码短语,这是有道理的。但是,如果密码短语不同,为什么我要上传的公钥与authorized_keys文件中的公钥相同?我没有检查每个字符,但是即使我认为密码短语不同,键也不可能如此相似,以至于开始和结束都相同。


您以哪个文件开头id_rsa?我期望ssh-copy-id失败的方式是错误消息,因为它期望以结尾的文件.pub。随着您的结束,.bak它可能会使用id_rsa.pub.bak.pub
nlu 2015年

@nlu-我有id_rsa,可以通过使用记事本ftp资源管理器拖放文件来复制。也有id_rsa.bak,它是我用nano创建的,并用记事本++的鼠标粘贴了内容,但看起来它制作了相同的文本,但不知何故有2列。而且我还有id_rsa.pub.bak,它也是用nano制作的。实际上,它有3行,但原始行全部都在一行中。不知道有关系吗。但正如我们所见,我没有收到有关文件名的错误消息。
Darius.V,2015年

1
是的 例如,请参见此处:snailbook.com/faq/publickey-userauth.auto.html(“如果使用文本编辑器,请注意不要弄断该文件中的行。”)。
nlu 2015年

由于他们认为它不在业务环境中,所以问题已经解决,但是我正在解决业务环境问题。
Darius.V,2015年

Answers:


25

实际上,您需要登录以复制密钥,您无权访问远程计算机(禁用了无效的密钥和密码身份验证):

在/ etc / ssh / sshd_config中重新启用passwd身份验证:

PasswordAuthentication yes

然后重新启动服务:

service sshd restart

复制您的公钥:

ssh-copy-id -i ~/.ssh/id_rsa.pub USER@HOST -p PORT
[Enter user password]

尝试再次登录,不需要密码。

然后禁用密码身份验证。


如果我在要登录的服务器上将PasswordAuth设置为yes,并且可以使用密码与腻子连接,但ssh-copy-id仍然不询问密码,而只写权限被拒绝(公钥),该怎么办。?
Darius.V,2015年

嘿,我想说谢谢!!!你救了我的一天!非常感谢!!!
尤川豪

感谢@Nabil,它也可以从Ubuntu 18.04开始使用。只是对未来的读者警告:按照说明编辑/ etc / ssh / sshd_config而不是ssh_config(通过监督)(就像我一样!)。同样,ssh-copy-id USER @ HOST显然足够。
Snidhi Sofpro

12

Permission denied (publickey) 是远程SSH服务器说“我只接受公共密钥作为身份验证方法,请走开”。

那是您的主要挑战:进入远程系统。完成后,您可以上传密钥:

  • 使用ssh-copy-id-例如,如果您要替换旧密钥,它将允许您指定其他密钥。
  • 编辑远程用户~/.ssh/authorized_keys以手动添加密钥。

5

终于找到问题了。

实际上,我不需要复制公钥。相同的公钥用于两个私钥-带密码短语和不带密码短语。 我以为我有没有密码的私钥,但实际上我没有。我只有.ppk,没有密码短语。那是通讯小姐。因此,同事无需密码即可创建私钥,因此现在我可以使用不带密码的ssh登录。我读到没有密码短语是不好的,但是同事说没关系。我不需要密码,因为我需要在重新启动时运行shell脚本-我想在计算机重新启动时启动autossh。

这次的解决方案就是这样-如果您想不使用密码登录-请检查您的私钥是否真的没有密码。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.