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


当前回答

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

这对我很管用。

chmod 600 ~/.ssh/id_rsa

其他回答

当使用gpg-agent作为我的ssh-agent并使用gpg子密钥作为我的ssh密钥https://wiki.archlinux.org/index.php/GnuPG#gpg-agent时,我出现了错误。

我怀疑这个问题是由我在摇摆配置中使用的sleep+lock命令导致的gpg的无效pin输入tty引起的

bindsym $mod+Shift+l exec "sh -c 'gpg-connect-agent reloadagent /bye>/dev/null;systemctl暂停;swaylock’”

或者只是睡眠/暂停

重置引脚输入tty以解决问题

全球连线代理updatestarptty /dev/null

和修复我的摇摆睡眠+锁定命令:

bindsym $mod+Shift+l exec "sh -c 'gpg-connect-agent reloadagent /bye>/dev/null;systemctl暂停;swaylock;Gpg-connect-agent updatestartuptty /bye > /dev/null'"

我曾经遇到过和你一样的问题,我通过以下步骤解决了它。

Chmod 700 ~/.ssh Chmod 600 ~/.ssh/* ssh-copy-id user@ip ssh-agent - s ssh-add

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

这对我很管用。

chmod 600 ~/.ssh/id_rsa

对我来说,问题在于错误地将公钥复制/粘贴到Gitlab中。复制产生了额外的回报。确保你粘贴的是一行键。

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.