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


当前回答

在将Fedora 26升级到28之后,我遇到了同样的问题。 下面的日志也不见了

/var/log/secure
/var/log/messages

问题:

antop@localmachine  ~  ssh root@ocp1.example.com
sign_and_send_pubkey: signing failed: agent refused operation
root@ocp1.example.com's password:

错误信息没有指向实际问题。问题由

chmod 700 ~/.ssh
chmod 600 ~/.ssh/*

其他回答

当使用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'"

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

正如其他人所提到的,这个错误可能有多种原因。

如果您正在使用SSH with Smart Card (PIV),并将该卡添加到SSH -agent with Ssh-add -s /usr/lib64/pkcs11/opensc-pkcs11.so 你可能会得到错误 Sign_and_send_pubkey:签名失败:代理拒绝操作 如果PIV身份验证已经过期,或者如果您已经移除并重新插入PIV卡,则从ssh登录。

在这种情况下,如果你尝试执行另一个ssh-add -s,你仍然会得到一个错误: 无法添加卡片"/usr/lib64/opensc-pkcs11。所以:代理拒绝操作

根据RedHat Bug 1609055 - pkcs11在代理中的支持是笨拙的,你反而需要做

ssh-add -e /usr/lib64/opensc-pkcs11.so
ssh-add -s /usr/lib64/opensc-pkcs11.so

我得到了一个sign_and_send_pubkey: signing failed: agent refused操作错误。但在我的案例中,问题是错误的pinentry路径。

在我的${HOME}/.gnupg/gpg-agent.conf中,pinentry-program属性指向一个旧的pinentry路径。修正路径并重新启动gpg-agent为我修复了它。

我通过使用journalctl -f跟踪日志发现了它。像下面这样的日志行包含了错误的路径:

Jul 02 08:37:50 my-host gpg-agent[12677]: ssh sign request failed: No pinentry <GPG Agent>
Jul 02 08:37:57 my-host gpg-agent[12677]: can't connect to the PIN entry module '/usr/local/bin/pinentry': IPC connect call failed

另一个原因是OpenSSH v9.0新默认的NTRU primes + x25519密钥交换,结合gpg-agent(至少在v2.2.32)。

为了解决问题,禁用新的密钥交换算法(因此它的安全效益),如下:

ssh -o 'KexAlgorithm -sntrup761x25519-sha512@openssh.com' [...]

(SSH配置也一样)

参见https://unix.stackexchange.com/questions/701131/use-ntrux25519-key-exchange-with-gpg-agent