Sign_and_send_pubkey:RSA 密钥签名失败;来自代理:代理拒绝操作

Sign_and_send_pubkey:RSA 密钥签名失败;来自代理:代理拒绝操作

我有一台运行 debian sid 的新机器,我在上面生成了一个新的 ssh 密钥对。我想找到一种方便的方法,使用我的旧 Ubuntu 机器及其密钥对将这个新密钥对复制到其他各种机器。我已禁用所有“远程”计算机的密码登录,因此我想使用旧计算机作为中间设备。在研究这个时,我发现了给出的确切情况作为 的手册页中的示例ssh-copy-id我按照示例访问 pi 零 running pihole,但在帖子标题中出现错误。

总结该示例中的步骤,debian具有新密钥对的计算机在哪里,sarp.lan具有旧密钥对的计算机在哪里,并且pihole是“远程”计算机,我做了: 在此输入图像描述

但是,运行时ssh -v pihole,我确实看到了输出

debug1: Server accepts key: /home/sarp/.ssh/id_rsa RSA SHA256:V74Y4EhlszaIzco6oxOtl86ALj/U8rhXO2XUpEftZLU agent

我阅读了有关该主题的各种帖子,但没有一个解决方案适合我。以下是我尝试过的一些细节/事情:

  • 权限正确的是.ssh/在此输入图像描述
  • 我没有运行 gnome-keyring-daemon: echo $SSH_AUTH_SOCKreturns /tmp/ssh-a8Ol5O0XY9Fv/agent.1326,并且我没有看到 keyring 守护进程正在运行ps aux
  • ssh-add -l正确显示第一张图片中可以看到的两个按键(一个来自旧机器,另一个来自新机器)
  • .ssh/config我刚刚从旧机器复制了,所以主机名/用户名/等。应该没事。

让我知道我是否应该提供额外的有用信息,如果这是非常明显的事情,我深表歉意,但我在这里错过了什么?

答案1

确保客户端上密钥目录和密钥的权限正确。 ~/.ssh 目录应该只对用户有执行、读取和写入权限。如果没有,则更改它们:

用户可以执行、读取和写入

chmod 700 ~/.ssh

对于私钥和 id_rsa,用户可以读写

chmod 600 ~/.ssh/id_rsa

对于公钥,用户可以读写,其他人可以读

chmod 644 ~/.ssh/*.pub

答案2

当问题不是下面的访问权限时~/.ssh(如您的详细列表所示),另一个选择可能是身份验证代理以某种方式挂起。

由于身份验证守护进程应该在消失时自动生成,因此您可以简单地尝试杀死它,例如使用killall ssh-agent.

如果您也将 GPG 配置为充当 SSH 身份验证代理(这不会不是从运行文件的路径来看,似乎是这种情况,但对于阅读此答案的其他人来说),那么您应该杀死 GPG 代理,例如使用gpgconf --kill gpg-agent.

答案3

sign_and_send_pubkey: signing failed for RSA ...消息通常意味着您的私钥无法读取,可能是由于权限问题或无法解锁。

ssh就我而言,我在配置错误的 shell 中运行DISPLAY,因此尝试解锁我的 ssh 私钥会触发一个我从未见过的图形解锁对话框。修复DISPLAY或明确解锁我的私钥并ssh-add修复我的特定情况。

相关内容