Mingw-W64:SSH-Add在获取GIT之前一直有效(连接到代理时出错:文件描述符错误) [英] Mingw-w64: ssh-add works until git fetch (Error connecting to agent: Bad file descriptor)
问题描述
我在Windows/Git bash/MingW64上,试图自动添加用于Git的ssh密钥。 我遵循了guide,只更改了我的私钥文件的路径。 它似乎起作用了-当打开git bash时,我得到了成功 已添加标识:/c/USERS/...&QOOT;。
ssh-add -l
还显示我的密钥添加正确,端口似乎已配置。
btw-此时$SSH_AGENT_PID
与ps
中的流程匹配,$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
,我只是用
取消现有
ssh-pageant
$ /usr/bin/ssh-pageant -k
请注意,如果由于任何原因ssh-pageant
没有使用此命令终止正在运行的ssh-pageant
,您始终可以从任务管理器执行此操作。
重新启动
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
之后再次面临这个问题。
相关:
- https://community.atlassian.com/t5/Sourcetree-questions/ssh-add-l-returning-quot-Error-connecting-to-agent-Bad-file/qaq-p/1654077
- https://github.com/cmderdev/cmder/issues/1781
这篇关于Mingw-W64:SSH-Add在获取GIT之前一直有效(连接到代理时出错:文件描述符错误)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!