无法将生成的 ssh 密钥添加到 ssh 代理“无法打开与您的身份验证代理的连接”

无法将生成的 ssh 密钥添加到 ssh 代理“无法打开与您的身份验证代理的连接”

首先,是的,我在这里和 stackoverflow 上读到了类似的问题和答案。它似乎没有给出任何明显的结果,所以我提出了一个新问题。

我正在使用最新的 Debian Buster 并尝试从终端设置对 GitHub 的访问。我按照 GitHub 官方网站上的步骤设置 ssh 连接这里这里

user@home-machine ~ $ sudo ssh-keygen -t ed25519 -C "my@email"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/ed25519): 
Enter passphrase (empty for no passphrase): [I don't use passphrase]
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/ed25519.
Your public key has been saved in /root/.ssh/ed25519.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx my@email
The key's randomart image is:
+--[ED25519 256]--+
xxxxxxxxxxxxxxxxxxx
+----[SHA256]-----+

user@home-machine ~ $ eval "$(ssh-agent -s)"
Agent pid 2864
user@home-machine ~ $ ssh-add ~/.ssh/id_ed25519
/home/user/.ssh/id_ed25519: No such file or directory
user@home-machine ~ $ sudo ssh-add ~/.ssh/id_ed25519
#here is me being stupid and not seeing the correct path, bu I amended the mistake below
user@home-machine ~ $ sudo ssh-add root/.ssh/id_ed25519
[sudo] password for user:
Could not open a connection to your authentication agent.

为什么它不起作用?我究竟做错了什么?抱歉,我刚刚学习 Linux 和 git,可能会遗漏一些东西。我将不胜感激你的帮助。

编辑: 尝试执行命令:

debtop@DebTop:~$ echo $SSH_AGENT_PID
2864
debtop@DebTop:~$ echo $SSH_AUTH_SOCK
/tmp/ssh-wpXiIKBOY4x7/agent.2863
debtop@DebTop:~$ eval$(ssh-agent -s)
bash: evalSSH_AUTH_SOCK=/tmp/ssh-yUWON3uD5kT5/agent.4242;: File or directory doesn't exist

答案1

user@home-machine ~ $ eval "$(ssh-agent -s)"
Agent pid 2864

在这里你开始了ssh-agentas user。这会初始化SSH_AUTH_SOCK环境变量,其他 SSH 工具使用该变量来查找代理的 Unix 套接字。

user@home-machine ~ $ sudo ssh-add root/.ssh/id_ed25519
[sudo] password for user:
Could not open a connection to your authentication agent.

在这里您调用ssh-addas root。除非您已明确配置sudo为传递SSH_AUTH_SOCK为通过 sudo 转换不会转移root的环境。

如果没有环境变量,该ssh-add命令将无法找到ssh-agent套接字,因为它位于随机命名的子目录中(通常为/tmp/ssh-<random_alphabet_soup>/agent.<number>)。套接字及其所在目录也只能由原始 访问user,但通常这对于 root 来说不是问题。

如果您希望代理sudo专门针对该用户在整个转换过程中工作,则需要将类似以下内容添加到您的/etc/sudoers文件中:

Defaults:user env_keep+=SSH_AUTH_SOCK

user(当然,替换为实际的用户名。)

如果您希望它在所有用户使用 转换为 root 时都适用sudo,您可以这样做:

Defaults>root env_keep+=SSH_AUTH_SOCK

答案2

我删除了所有密钥并尝试再次通过整个过程。当我创建没有如下所示的密钥时,它确实有效sudo

user@home-machine ~ $ ssh-keygen -t ed25519 -C "my@email"

感谢@Panki 的提示。不记得了,为什么我要用来sudo创建密钥。

相关内容