我的客户端系统很少,我需要在没有身份验证提示的情况下推送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
答案 0 :(得分:51)
您需要使用-i
标志:
ssh-copy-id -i my.key.pub 10.10.1.1
来自man page:
如果给出-i选项,则使用身份文件(默认为〜/ .ssh / id_rsa.pub),无论您的ssh-agent中是否有任何键。否则,如果这样:ssh-add -L提供任何输出,它优先使用它来识别身份文件
答案 1 :(得分:26)
运行以下命令
# ssh-add
如果出现以下错误: 无法打开与身份验证代理的连接
要删除此错误,请运行以下命令:
# eval `ssh-agent`
答案 2 :(得分:14)
在客户端上生成ssh密钥为我解决了
string st1 = new string(bigString.Reverse().ToArray());
string[] st2 = st1.Split(new char[] { '.' }, 3);
string user = new string(st2[0].Reverse().ToArray());
string method = new string(st2[1].Reverse().ToArray());
string msg = new string(st2[2].Reverse().ToArray());
Console.WriteLine(user);
Console.WriteLine(method);
Console.WriteLine(msg);
答案 3 :(得分:7)
ssh-copy-id无法找到系统中ssh-keygen生成的id_rsa.pub文件,请使用以下命令完成:
locate *.pub
ssh-copy-id -i /home/user_name/.ssh/id_rsa.pub hostname
答案 4 :(得分:4)
您需要使用-i选项指定密钥。
ssh-copy-id -i your_public_key user@host
感谢。
答案 5 :(得分:3)
旧帖但我今天想出了这个问题,结束了谷歌搜索并发现自己在这里。我自己想出来但想到我会分享我的问题&在我的案例中的解决方案,以帮助其他可能有同样问题的人。
问题:
[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只是指向您默认登录的目录。
希望这有助于任何人。
答案 6 :(得分:3)
最简单的方法是:
bool
ATT:
非常简单。
在" ss-keygen"的手册中说明:
"说明 ssh-keygen生成,管理和转换ssh(1)的身份验证密钥。 ssh-keygen可以创建RSA密钥,供SSH协议版本1和使用 用于SSH协议版本2的DSA,ECDSA或RSA密钥。要生成的密钥类型使用-t选项指定。 如果没有调用 任何参数,ssh-keygen都会生成一个RSA密钥,用于SSH协议2连接。"
答案 7 :(得分: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
才能起作用。
答案 8 :(得分:0)
使用我从其他地方手动复制的私钥在一个现有帐户中出现了这个问题。因此错误是因为缺少公键
因此只需从私人生成一个
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
答案 9 :(得分:0)
实际上在Ubuntu机器之一中的问题是ssh-keygen命令未正确运行。我尝试再次运行并导航到/home/user1/.ssh并能够看到id_rsa和id_rsa.pub密钥。然后尝试使用命令ssh-copy-id,它运行正常。
答案 10 :(得分:0)
使用简单
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.......==
答案 11 :(得分:0)
我遇到了同样的问题。问题是我的 ~/.ssh/id_rsa.pub
文件是空。我在弄乱我的 ssh 配置时以某种方式覆盖了它。修正文件后问题解决。
答案 12 :(得分:-1)
我今天在CentOS的两个VM之间以完全分布式模式在名称节点和数据节点之间设置ssh时遇到了这个问题。
由于我从数据节点而不是名称节点运行了以下命令,因此遇到了问题 ssh-copy-id -i /home/hduser/.ssh/id_ras.pub hduser @ HadoopBox2
由于公钥文件在数据节点中不存在,因此引发了错误。
答案 13 :(得分:-2)
在我的情况下,它是密钥丢失的.pub
扩展名。我从剪贴板粘贴它并保存为mykey
。以下命令返回描述错误:
ssh-copy-id -i mykey localhost
使用mv mykey mykey.pub
重命名后,工作正常。
ssh-copy-id -i mykey.pub localhost