ssh-add 返回:“连接到代理时出错:没有这样的文件或目录”

Won*_*Hau 67 linux ssh ssh-agent

ssh-add 单独不起作用:

Error connecting to agent: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我应该如何使用该工具?

Pan*_*nki 67

您需要先初始化代理。

您可以通过多种方式执行此操作。要么通过启动一个新的shell

ssh-agent bash
Run Code Online (Sandbox Code Playgroud)

或者通过评估ssh-agent当前 shell 中返回的变量。

eval "$(ssh-agent)"
Run Code Online (Sandbox Code Playgroud)

我建议使用第二种方法,因为您保留了所有历史记录和变量。

  • 谢谢它对我有用!由于我使用的是 `fish`,所以命令是 `ssh-agent fish`。 (4认同)
  • 这对我不起作用 (3认同)
  • 它有什么作用以及为什么有必要? (2认同)

Kus*_*nda 30

SSH 代理未运行,或者它设置的环境变量在当前环境中不可用(最重要的是SSH_AUTH_SOCK),或者它们设置不正确(指向死代理)。

您可以使用以下命令在当前 shell 会话中启动代理

eval "$(ssh-agent)"
Run Code Online (Sandbox Code Playgroud)

或使用

ssh-agent fish
Run Code Online (Sandbox Code Playgroud)

(替换fish为您正在使用的任何外壳)。但是既然你说你曾经可以在ssh-add没有这个的情况下使用,这让我相信你不小心杀死了代理(或者它由于其他原因而终止)。错误消息让我认为SSH_AUTH_SOCK环境变量实际上已设置,但ssh-add在该路径上找不到有效的通信套接字。

如果您完全注销并重新登录或重新启动机器,您通常的做事方式是否会再次起作用,我不会感到惊讶。


小智 24

在 Windows PowerShell 中(以管理员身份运行):

  1. 检查ssh-agent的当前状态:

    Get-Service | ?{$_.Name -like '*ssh-agent*'} | select -Property Name, StartType, Status

  2. 如果服务被禁用,请启用该服务:

    Set-Service -Name ssh-agent -StartupType Manual

  3. 启动服务:

    Start-Service ssh-agent

  4. 像以前一样添加您的密钥:

    ssh-add <path to the key>

  • @DrBeco 没有“大量”的 powershell 答案。而且,无论你相信与否,[powershell 实际上可以在 *nix](https://powershellonlinux.com/) 上使用,因此 powershell 的用户不会自动给出偏离主题的答案。我怀疑这里的命令在 *nix 上不起作用,但由于我们还决定 WSL 是主题,并且可能它们在那里工作,所以我真的不认为删除这个答案有什么意义。 (4认同)
  • 这是 Unix 和 Linux 堆栈交换。我很高兴现在 Windows 用户终于可以在 shell 中输入一些好的命令,但是 `Get-Service` 之类的东西对开源 Linux 社区没有任何帮助。也许一个模组可以开始研究这些类型的答案并在我们还可以的时候删除它们,因为如果我们让它充斥论坛,我们很快就会失败。 (2认同)
  • 谢谢你!视窗!!是的! (2认同)