我有一台运行 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_SOCK
returns/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
修复我的特定情况。