用SSH密钥配置一个新的数字海洋液滴。当我运行ssh-copy-id时,这是我得到的:

ssh-copy-id user@012.345.67.89
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
sign_and_send_pubkey: signing failed: agent refused operation
user@012.345.67.89's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'user@012.345.67.89'"
and check to make sure that only the key(s) you wanted were added.

然而,当我尝试ssh时,会发生这种情况:

ssh user@012.345.67.89
sign_and_send_pubkey: signing failed: agent refused operation
user@012.345.67.89's password: 

输入密码后,我可以正常登录,但这当然违背了创建SSH密钥的初衷。我决定看看ssh-agent服务器端,下面是我得到的:

user@012.345.67.89:~# eval `ssh-agent -s`
Agent pid 5715
user@012.345.67.89:~# ssh-add -l
The agent has no identities.

用户/。Ssh /authorized_keys也包含Ssh -rsa密钥条目,但是find name "keynamehere"没有返回任何内容。


当前回答

我需要分享,因为我花了太多时间寻找解决方案

这就是解决方案:https://unix.stackexchange.com/a/351742/215375

我正在使用这个命令:

ssh-keygen -o -t rsa -b 4096 -C "email@example.com"

Gnome-keyring不支持生成的密钥。

删除-o参数解决了这个问题。

其他回答

运行以下命令解决此问题。

这对我很管用。

chmod 600 ~/.ssh/id_rsa

在客户端机器上运行SSH -add,将SSH密钥添加到代理。

使用ssh-add -l(同样在客户端上)确认确实添加了它。

我在Linux Ubuntu 18中遇到了同样的问题。从Ubuntu 17.10更新之后,每个git命令都会显示这条消息。

解决方法是确保您对id_rsa和id_rsa.pub拥有正确的权限。

使用stat——format '%a' <file>检查当前的chmod编号。 id_rsa应该是600,id_rsa.pub应该是644。

更改文件使用的权限

chmod 600 id_rsa
chmod 644 id_rsa.pub

这解决了我更新的问题。

这里工作的是:在客户端上

1) ssh-add

2) ssh-copy-id user@server

密钥已经在一段时间前使用简单的“ssh-keygen -t rsa”创建 我看到了错误消息,因为我没有首先运行ssh-add就将ssh公钥从客户端复制到服务器(使用ssh-id-copy),因为我错误地认为我已经在一段时间之前添加了它们。

只是为了把另一个原因扔进擂台……

我的env被配置为使用金雅拓卡…但是我的~/中有一个名为id_rsa_gemalto_old(.pub)的旧对。Ssh /——名字中有gemalto——足以让git获取导致sign_and_send_pubkey: signing failed: agent refused操作。

(Ubuntu 18.04.6)