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

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

我想设置到虚拟机计算机上的 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,因此评论说它们是好的。

更新

尝试在 A 电脑上设置密码验证为是,然后重新启动服务。按照答案重新启动不起作用,它显示 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 文件中的公钥相同?我没有检查每一个字符,但我认为密钥不太可能如此相似,以至于即使密码不同,开头和结尾也会相同。

答案1

您实际上需要登录才能复制密钥,您无权访问远程机器(无效密钥和密码验证已禁用):

在 /etc/ssh/sshd_config 中重新启用密码验证:

PasswordAuthentication yes

然后重启服务:

service sshd restart

复制你的公钥:

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

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

然后禁用密码验证。

答案2

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

这是你面临的主要挑战:进入远程系统。一旦你能做到这一点,你就可以上传你的密钥:

  • ssh-copy-id例如,如果您正在替换旧密钥,使用- 它将允许您指定不同的密钥。
  • 编辑远程用户~/.ssh/authorized_keys以手动附加您的密钥。

答案3

终于找到问题了。

实际上我不需要复制公钥。两个私钥(带密码和不带密码)都有相同的公钥。 我以为我有没有密码的私钥,但实际上我没有。我只有没有密码的 .ppk。那是沟通失误。所以同事制作了没有密码的私钥,所以现在我可以使用没有密码的 ssh 登录。我读到没有密码是不好的,但同事说没问题。我需要没有密码,因为我需要在重启时运行 shell 脚本 - 我想在计算机重启时启动 autossh。

所以这次的解决方案是 - 如果您想在没有密码的情况下登录 - 请检查您的私钥是否真的没有密码。

相关内容