【发布时间】:2017-03-06 16:21:18
【问题描述】:
我在 Windows 7 上使用 cygwin 作为我的终端。我找到了几个在 cygwin 中运行 ssh-agent 的建议,因此我不必每次运行 git fetch/pull/push 时都输入密码。我将以下内容添加到我的 .bash_profile 并重新启动了我的 cygwin 会话:
SSH_ENV="$HOME/.ssh/environment"
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent -s | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
看起来 ssh-agent 和 ssh-add 运行成功了,但仍然提示我输入密码。
Initialising new SSH agent...
succeeded
Enter passphrase for /cygdrive/c/Users/<username>/.ssh/id_rsa:
Identity added: /cygdrive/c/Users/<username>/.ssh/id_rsa (/cygdrive/c/Users/<username>/.ssh/id_rsa)
$ ssh-add -l
2048 <fingerprint> /cygdrive/c/Users/<username>/.ssh/id_rsa (RSA)
$ git fetch --all
Fetching origin
Enter passphrase for key '/c/Users/<username>/.ssh/id_rsa':
事实上,我的 git 连接使用的是 SSH 而不是 HTTPS(经过编辑的私人信息):
$ git remote -v
origin ssh://git@XXX/XXX.git (fetch)
origin ssh://git@XXX/XXX.git (push)
我发现这个问题最接近的问题是以下问题:
ssh-agent doesn't work / save me from typing passphrase for git
但是,我没有在 /git/bin 下重命名我的 ssh。
关于如何诊断此问题的任何建议?谢谢!
【问题讨论】:
-
在日志中可以看到不同的路径。你的
~/.ssh/config怎么样? -
我没有。
-
@Jakuje,我注意到路径不同 - ssh-add 一个是
/cygdrive/c/Users/<username>/.ssh/id_rsa,但 git 一个是/c/Users/<username>/.ssh/id_rsa。我如何使这些匹配? -
有同样的问题。我怀疑,问题与不同的路径有关。到目前为止运气好吗?
-
2021:请参阅 Randy Groom 对安装了适用于 Windows 的 Git 的 Windows 10 的回答。
标签: windows git ssh cygwin ssh-agent