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

Dar*_*s.V 33 ssh-keys

我想设置到具有虚拟机的计算机中的 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).
Run Code Online (Sandbox Code Playgroud)

现在我尝试输入文件 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).
Run Code Online (Sandbox Code Playgroud)

更新

检查了 A 计算机中 .ssh 文件夹和 authorized_keys 文件的权限 - 它们是 700 和 600,所以评论说它们很好。

更新

尝试在 A 计算机上设置密码身份验证是并重新启动服务。根据答案重新启动不起作用,它写了 sshd 无法识别,所以我重新启动:

sudo /etc/init.d/ssh restart
Run Code Online (Sandbox Code Playgroud)

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

ssh-copy-id -i id_rsa.pub [user@host] -p [port] -v
Run Code Online (Sandbox Code Playgroud)

还是一样:

Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)

如果我手动将密钥复制到authorized_keys,我会看到公钥已经存在,与我想复制的相同。我问我同事,他说他没有抄袭。所以我什至不明白它怎么会在那里。

好吧,如果它在那里会很好,但是留在那里它不会让我在不输入密码的情况下连接到 ssh。但是我能够连接输入密码。所以这里显然还是有问题。我试图复制的密钥是空密码。当我与 ssh 连接时 - 我输入的密码不是空的。

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

Nab*_*ane 30

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

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

PasswordAuthentication yes
Run Code Online (Sandbox Code Playgroud)

然后重启服务:

service sshd restart
Run Code Online (Sandbox Code Playgroud)

复制您的公钥:

ssh-copy-id -i ~/.ssh/id_rsa.pub USER@HOST -p PORT
[Enter user password]
Run Code Online (Sandbox Code Playgroud)

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

然后禁用密码验证。


Oli*_*Oli 14

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

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

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


Dar*_*s.V 5

终于找到问题了。

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

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