Windows 正在运行使用cygwin的ssh代理,但git仍在提示输入密码短语

Windows 正在运行使用cygwin的ssh代理,但git仍在提示输入密码短语,windows,git,ssh,cygwin,ssh-agent,Windows,Git,Ssh,Cygwin,Ssh Agent,我在Windows7上使用cygwin作为终端。我发现了一些在cygwin中运行ssh代理的建议,这样我就不必在每次运行git fetch/pull/push时都输入密码。我在.bash_配置文件中添加了以下内容,并重新启动了cygwin会话: SSH_ENV="$HOME/.ssh/environment" function start_agent { echo "Initialising new SSH agent..." /usr/bin/ssh-agent -s | s

我在Windows7上使用cygwin作为终端。我发现了一些在cygwin中运行ssh代理的建议,这样我就不必在每次运行git fetch/pull/push时都输入密码。我在.bash_配置文件中添加了以下内容,并重新启动了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代理和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/bin下重命名ssh


对如何诊断这个问题有什么建议吗?谢谢

问题仍然存在。似乎它与不同的路径有关,尚未修复。 您可以考虑使用SSH代理作为交互的替代工具。p> 在Linux中,它通常是这样安装的:

$ sudo apt-get update
$ apt-get install --assume-yes --no-install-recommends apt-utils expect 
在cygwin中,您可以在
Tcl
下找到它:

下面是如何使用它的一个简单步骤

创建一个文件,让我们找到它并命名为

#!/usr/bin/expect -f
spawn git push origin master
expect "Username for 'https://github.com':"
send "<username>\n";
expect "Password for 'https://<username>@github.com':"
send "<password>\n";
interact
#!/usr/bin/bash
git remote set-url origin git@github.com:<username>/<repo>.git
git add .
git commit -m "my test commit using expect"
expect ~/.ssh/.expect_push
使其可执行并在
/bin

$ chmod +x ~/.expect_push
$ chmod +x ~/.git_push
$ cd /bin
$ ln -s ~/.git_push push
然后,您可以
推送到遥控器,而无需填写用户名、密码或密码短语

$ cd /path/to/your/git/folder
$ push

以下是一个比上述解决方案更简单的解决方案:

  • 启动服务(可通过在搜索中键入服务找到 (任务栏上的框)
  • 编辑“OpenSSH身份验证代理”的设置
  • 将启动类型设置为自动并启动服务
  • 启动“编辑系统环境变量”(类型Environment 在任务栏上的搜索框中)
  • 添加值设置为的GIT_SSH变量 “C:\Windows\System32\OpenSSH\ssh.exe”

  • 现在,添加SSH密钥后,您不需要继续在Windows命令提示符或Cygwin Bash shell中键入密码短语。

    您可以在日志中看到不同的路径。你的
    ~/.ssh/config
    看起来怎么样?我没有。@Jakuje,我注意到路径不同-ssh add-one是
    /cygdrive/c/Users///.ssh/id\u rsa
    ,而git-one是
    /c/Users/.ssh/id\u rsa
    。我该如何匹配?有同样的问题。我怀疑问题与不同的路径有关。到目前为止运气好吗?2021年:在安装Git for Windows的情况下,查看Randy Groom对Windows 10的回答。
    $ cd /path/to/your/git/folder
    $ push