TortoiseGit与openssh密钥不使用ssh-agent进行身份验证

kra*_*mer 36 ssh openssh ssh-keys tortoisegit ssh-agent

我正在Windows XP上设置一个git环境(msysGit 1.7.11,TortoiseGit 1.7.14),并尝试实现以下几点:

  • ssh连接在不同于默认值22的端口上
  • 由ssh-agent处理的ssh身份验证

所以我创建了一个〜/ .ssh/config文件:

Host gitbox
   User gitolite
   Hostname XX.XX.XX.XX
   Port 154
   PreferredAuthentications publickey
   IdentityFile "/c/Documents and Settings/kraymer/.ssh/id_rsa"
Run Code Online (Sandbox Code Playgroud)

使用git bash CLI时,一切都按预期工作.

我正在与TortoiseGit斗争.
我首先使用Plink安装TortoiseGit并使用Pageant加载ssh私钥.自动身份验证(Pageant)工作但设置失败,因为TortoiseGit无法识别格式为gitolite@gitbox/repo.git的 git repos url .

然后我决定使用openssh客户端安装TortoiseGit,因此ssh客户端可以读取配置文件,并模仿git CLI设置.
我在TortoiseGit设置中选择了msys git附带的ssh.exe作为ssh客户端.
在执行a时git pull,远程URL现在已解析,但在我期望进行ssh-agent自动身份验证时会询问密码短语密码.

https://dl.dropbox.com/u/1026715/tortoisegit.png

是否可以使TortoiseGit与ssh-agent一起使用?
或者让TortoiseGit(Plink)知道.ssh/config

编辑#1

在@VonC建议后,我配置了我的$ HOME变量.
当我在TortoiseGit中单击显示环境变量时,我现在有:

 HOME=C:\Documents and Settings\kraymer  
 HOMEDRIVE=C: 
 HOMEPATH=\Documents and Settings\kraymer 
Run Code Online (Sandbox Code Playgroud)

git pull仍然要求我输入密码.

Hai*_*lem 85

不需要调整.

只需让TortoiseGit指向git本身使用的同一个ssh客户端,请看截图:

在此输入图像描述

这应该是C:\Program Files\Git\usr\bin\ssh.exeAleksey Kontsevich在评论中提到的最新版本的Git.

  • 在最新的Git版本中,它是 - C:\ Program Files\Git\usr\bin\ssh.exe (36认同)
  • 在我的例子中没有“C:\Program Files\Git\usr\bin\ssh.exe”,但发现“C:\Windows\System32\OpenSSH\ssh.exe”似乎可以工作 (9认同)
  • 如果您在安装 tortoise git 时选择使用 git ssh 客户端而不是他们的“推荐”客户端,则可能可以避免此步骤。 (2认同)

Gou*_*amS 6

Windows10 系统
#TortoiseGit
在网络部分
从: C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
到: “C:\Users{user}\AppData\Local\Programs\Git\usr\bin\ssh.exe”

在此输入图像描述


小智 5

  1. 西格文

使用以下文章中描述的方法: https ://help.github.com/articles/working-with-ssh-key-passphrases

cygwin 会话启动时仅会询问一次密码。!!!在退出 cygwin 会话之前,不要忘记杀死 ssh-agent 进程(使用 ps 查找进程 PID 并杀死 -9)。

我们对 cygwin 使用单独的方法,因为 cygwin 由于某种原因看不到 Windows 环境中外部启动的进程。

2, 3) MsysGit、TortoiseGit

有用的链接: http://dogbiscuit.org/mdub/weblog/Tech/WindowsSshAgent

安装 MsysGit。安装TortoiseGit(安装过程中检查openssh而不是plink)。!!!检查系统变量。如果存在 GIT_SSH 变量 - 将其删除。

转到 TortoiseGit->设置->常规

将 Git exe 路径设置为 /bin 将外部 dll 路径设置为 /mingw/bin

转到 TortoiseGit->Settings->Network 将 SSH 客户端属性设置为 /bin/ssh.exe

定义系统变量 SSH_AUTH_SOCK=C:\temp.ssh-socket

启动 cmd.exe 并执行以下命令(因为我们安装了 MsysGit,所以可以在 cmd 中访问以下所有命令 - /bin 添加到系统 PATH 变量):

# following command is required to execute for avoiding Address already bind message when ssh-agen is not started yet but .ssh-socket exists after previous agent session
rm "%SSH_AUTH_SOCK%"

# Starting ssh-agent
ssh-agent -a "%SSH_AUTH_SOCK%"

# Adding our openssh key
ssh-add "%USERPROFILE%\.ssh\id_rsa"

# Type password for your key
Run Code Online (Sandbox Code Playgroud)

就是这样。从那一刻起,您可以从 TortoiseGit 和 MsysGit 执行 git push、git pull,而无需提示密码。

当不再需要 ssh-agent 时,您可以通过 Windows 任务管理器将其终止。