Mingw-W64:SSH-Add在获取GIT之前一直有效(连接到代理时出错:文件描述符错误) [英] Mingw-w64: ssh-add works until git fetch (Error connecting to agent: Bad file descriptor)

查看:0
本文介绍了Mingw-W64:SSH-Add在获取GIT之前一直有效(连接到代理时出错:文件描述符错误)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Windows/Git bash/MingW64上,试图自动添加用于Git的ssh密钥。 我遵循了guide,只更改了我的私钥文件的路径。 它似乎起作用了-当打开git bash时,我得到了成功 已添加标识:/c/USERS/...&QOOT;。

ssh-add -l还显示我的密钥添加正确,端口似乎已配置。

btw-此时$SSH_AGENT_PIDps中的流程匹配,$SSH_AUTH_PORT似乎有效(/tmp/ssh-cEU4wbNe3vo4/agent.927或类似)

但是,当我cd到我的Git存储库并运行git fetch时,我得到:

fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

之后,ssh-add不再起作用,打印:

Error connecting to agent: Bad file descriptor

这很奇怪,因为$SSH_AUTH_PORT$SSH_AGENT_PID在这一点上都没有更改,我已经尝试了export以确保不变。

启动新的SSH代理并添加我的密钥在同一终端会话中工作,但再次尝试git fetch将具有相同的效果。

Git在做什么,搞乱了SSH代理?

推荐答案

我在Msys2下工作,与ConEmu一起工作。 我最近遇到了几个消息Error connecting to agent: Bad file descriptor的例子。 读完这篇文章后,我记得在错误出现前不久尝试过git pull,所以它可能触发了错误。 我没有花时间进行系统的测试来确认。

根据Reuse in PowerShell a running PuTTY agent (pageant),我检查了问题是否仅与代理-客户端的特定组合有关。

鉴于WinSCP工作正常(A1-C2正常),而Msys2 bashssh不正常(A1-C3不正常),我确认问题出在Msys2 bashssh-pageant(A1-P1-C3损坏),尽管与您显示的相同检查没有发现任何问题。

$ env | grep SSH
SSH_AUTH_SOCK=/tmp/.ssh-pageant-RY16205
SSH_PAGEANT_PID=1615
$ ps
      PID    PPID    PGID     WINPID   TTY    STIME COMMAND
     1618       1    1618      16144  cons0   Jan 25 /usr/bin/bash
     1615       1    1615      15960  ?       Jan 25 /usr/bin/ssh-pageant

由于问题出在ssh-pageant,我只是用

重新启动了它
  1. 取消现有ssh-pageant

     $ /usr/bin/ssh-pageant -k
    

请注意,如果由于任何原因ssh-pageant没有使用此命令终止正在运行的ssh-pageant,您始终可以从任务管理器执行此操作。

  1. 重新启动ssh-pageant并设置相应的环境变量

     $ eval $(/usr/bin/ssh-pageant -r -a "/tmp/.ssh-pageant-$USERNAME")
    

    $ /usr/bin/ssh-pageant -r -a "/tmp/.ssh-pageant-$USERNAME"
    SSH_AUTH_SOCK='/tmp/.ssh-pageant-RY16205'; export SSH_AUTH_SOCK;
    SSH_PAGEANT_PID=10014; export SSH_PAGEANT_PID;
    echo ssh-pageant pid 10014;
    $ SSH_AUTH_SOCK='/tmp/.ssh-pageant-RY16205'; export SSH_AUTH_SOCK;
    $ SSH_PAGEANT_PID=10014

并且运行良好。 由于我没有彻底测试,可能会在新的git pull之后再次面临这个问题。

请注意,我在Msys2 bash下使用了git,我没有单独的git和它自己的ssh。 因此,答案中发布的永久解决方案似乎并不适用于我。 我似乎也没有Windows OpenSSH,所以this也不适合我。 我仍然需要找到问题的根本原因。

相关

  1. https://community.atlassian.com/t5/Sourcetree-questions/ssh-add-l-returning-quot-Error-connecting-to-agent-Bad-file/qaq-p/1654077
  2. https://github.com/cmderdev/cmder/issues/1781

这篇关于Mingw-W64:SSH-Add在获取GIT之前一直有效(连接到代理时出错:文件描述符错误)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆