用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"没有返回任何内容。


当前回答

对于那些最近升级到“现代”ssh版本[OpenSSH_8.1p1, OpenSSL 1.1.1d FIPS 2019年9月10日]-与fedora 31一起提供,似乎不再接受旧的DSA SHA256密钥(我的日期是2006年!)-创建了一个新的rsa密钥,公共添加到授权,客户端私有,一切都完美地工作。

感谢之前的建议,特别是SSH -v非常有用

其他回答

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

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

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

这对我很管用。

chmod 600 ~/.ssh/id_rsa

这应该是一个超级用户的问题。

对的,我在MacOSX SourceTree中有完全相同的错误,然而,在iTerm2终端中,事情工作得很好。

然而,问题似乎是我有两个ssh代理运行;(

第一个是/usr/bin/ssh-agent(也就是MacOSX的),然后是HomeBrew安装的/usr/local/bin/ssh-agent。

从SourceTree启动一个终端,允许我看到SSH_AUTH_SOCK的差异,使用lsof我找到了两个不同的ssh-代理,然后我能够将密钥(使用ssh-add)加载到系统的默认ssh-代理(即。/usr/bin/ssh-agent), SourceTree恢复正常。

In my case the problem was that GNOME keyring was holding an invalid passphrase for the ssh key to be used. After spending indecent amount of time troubleshooting this issue I ran seahorse and found the entry to hold empty string. I can only guess that it was caused by mistyping the passphrase at first use some time earlier, and then probably cancelling the requester or so in order to fall back to command line. Updating the entry with correct passphrase immediately solved the problem. Deleting that entry (from "login" keyring) and reentering passphrase at that first prompt (and checking the appropriate checkbox) solves this too. Now agent gets the correct passphrase from the unlocked at login keyring named "login" and neither asks for passphrase nor "refuses operation" anymore. Of course YMMV.

是的。在客户端机器上运行ssh-add。 然后重复执行命令ssh-copy-id userserver@012.345.67.89