ssh-copy-id找不到身份错误


79

我的客户端系统很少,我需要按ssh键并从服务器登录而无需身份验证提示。

首先,在服务器上,我创建了如下的ssh密钥,成功了

]# ssh-keygen -t rsa -N "" -f my.key

其次,尝试复制pub密钥,但失败,没有身份错误。我在这里做错了一步吗?

]# ssh-copy-id my.key.pub 10.10.1.1
/usr/bin/ssh-copy-id: ERROR: No identities found

您确认my.key存在ls -l my.key吗?您是否有步骤不向我们展示已完成操作cd?可能不是,只是问问您是“第二只眼睛” ;-)。祝好运。
Shellter 2014年

Answers:


65

您需要使用-i标志:

ssh-copy-id -i my.key.pub 10.10.1.1

手册页

如果指定了-i选项,则将使用身份文件(默认为〜/ .ssh / id_rsa.pub),而不管ssh-agent中是否有任何密钥。否则,如果满足以下条件:ssh-add -L提供任何输出,则优先使用该输出而不是标识文件


3
我尝试使用-i选项并将键成功推向目标。也验证了authorized_keys文件和密钥似乎在那儿。然后,在我尝试了ssh root@10.10.1.1之后,仍然提示输入密码。?ssh-copy-id -i my.key.pub 10.10.1.1现在尝试使用“ ssh '10 .10.1.1'”登录到计算机,并签入:.ssh / authorized_keys以确保我们没有添加额外的密钥。没想到的 〜]#ssh root@10.10.1.1 root@10.10.1.1的密码:
2014年

3
ssh默认情况下会查找~/.ssh您的密钥等。由于您的my.key文件似乎位于另一个目录中,请尝试ssh -i /location/of/my.key 10.10.1.1(或考虑将my.key文件移动到~/.ssh
Josh Jolly

42

在客户端上生成ssh密钥为我解决了它

$ ssh-keygen -t rsa

1
我会说这是一种适用于通常情况的方法(在默认位置创建SSH密钥)
Stefan Reich

1
刚刚ssh-keygen为我工作。无需指定-t rsa
Sopalajo de Arrierez

31

运行以下命令

# ssh-add

如果出现以下错误:无法打开与身份验证代理的连接

要消除此错误,请运行以下命令:

# eval `ssh-agent`

5
执行eval之后,先执行ssh-agentssh-add,然后执行ssh-copy-id,一切都应正常工作。
萨拉迪2014年

2
谢谢!我一直在尝试找出不起作用的地方,但这已解决了问题
maharvey67 '16

1
/usr/bin/ssh-copy-id: ERROR: No identities found即使在运行上述命令后,原始错误仍然存在
ulkas '19

还是对我没有帮助
Stefan Reich

9

ssh-copy-id找不到系统中ssh-keygen生成的id_rsa.pub文件,请使用以下命令完成:

  1. 找到.pub文件的路径: locate *.pub
  2. 复制路径(例如:/home/user_name/.ssh/id_rsa.pub)并运行以下命令: ssh-copy-id -i /home/user_name/.ssh/id_rsa.pub hostname

8

最简单的方法是:

ssh-keygen
[enter]
[enter]
[enter]

cd ~/.ssh
ssh-copy-id -i id_rsa.pub USERNAME@SERVERTARGET

提示:

它非常非常简单。

在“ ss-keygen”手册中说明:

“说明ssh-keygen会生成,管理和转换ssh(1)的身份验证密钥。ssh-keygen可以创建供SSH协议版本1和DSA,ECDSA或RSA密钥供SSH协议版本2使用的RSA密钥。用-t选项指定要生成的密钥。 如果不带任何参数调用ssh-keygen,它将生成一个RSA密钥,用于SSH协议2连接。


谢谢。这工作了。我不必生成密钥,因为我已经有了一个。它正在更改为.ssh目录,并使用执行该命令的命令。
肖恩·拉斯穆森

这对我有用,谢谢!
Arjun Kumar


6

旧帖子,但今天我想到了这个问题,结束了谷歌搜索,发现自己在这里。我自己解决了这个问题,但以为我会分享我的问题和解决方案,以帮助其他可能遇到相同问题的人。

问题:

[root@centos [username]]# ssh-keygen -t rsa

Enter file in which to save the key (/root/.ssh/id_rsa):我刚刚打入

/usr/bin/ssh-copy-id: ERROR: No identities found

解:

Enter file in which to save the key (/root/.ssh/id_rsa): **/home/[username]/id_rsa**

请确保如果您是以root身份执行此操作,则将密钥复制到要登录的用户目录中。不是root用户目录。

在执行此操作时,我正在向计算机中发送消息,因此我猜ssh-copy-id仅指向默认情况下登录的目录。

希望这对任何人都有帮助。


2

在一个我拥有从其他地方手动复制的私钥的现有帐户中遇到了这个问题。因此错误是因为公共密钥丢失

所以只需从私人生成一个

 ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

2

实际上,Ubuntu机器之一中的问题是ssh-keygen命令未正确运行。我尝试再次运行并导航到/home/user1/.ssh并能够看到id_rsa和id_rsa.pub密钥。然后尝试命令ssh-copy-id,它工作正常。


1

FWIW,-i选项对我来说是个麻烦。ssh-copy-id默认情况下将使用〜/ .ssh / id_rsa.pub。

使它无法使用的是〜目录,〜/ .ssh目录和远程计算机上的〜/ .ssh / authorized_keys文件的权限。

这三个都需要设置为chmod 755 ~ ~/.ssh ~/.ssh/authorized_keys,然后ssh-copy-id your-remote-server.com才能起作用。


0

使用simple ssh-keyscan hostname查找两个站点上是否都存在密钥:

ssh-keyscan rc1.localdomain
[or@rc2 ~]$ ssh-keyscan rc1
# rc1 SSH-2.0-OpenSSH_5.3
rc1 ssh-rsa AAAAB3NzaC1yc2EAAAABI.......==

ssh-keyscan rc2.localdomain
[or@rc2 ~]$ ssh-keyscan rc2
# rac2 SSH-2.0-OpenSSH_5.3
rac2 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAys7kG6pNiC.......==

-1

我今天在CentOS的两个VM之间以完全分布式的方式在名称节点和数据节点之间设置ssh时遇到了这个问题。

遇到问题是因为我从数据节点而不是名称节点运行以下命令ssh-copy-id -i /home/hduser/.ssh/id_ras.pub hduser @ HadoopBox2

由于公钥文件在数据节点中不存在,因此引发了错误。


-3

在我的情况下,这是.pub密钥的缺失扩展。我将其从剪贴板粘贴并另存为mykey。以下命令返回描述的错误:

ssh-copy-id -i mykey localhost

用重新命名后mv mykey mykey.pub,可以正常工作。

ssh-copy-id -i mykey.pub localhost
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.