TortoiseGit使用SSH代理OpenSSH密钥不认证(TortoiseGit with op

2019-06-21 06:15发布

我设置了在Windows XP(msysGit 1.7.11,TortoiseGit 1.7.14)一个git环境,努力实现以下几点:

  • 比默认22不同的端口上连接的ssh
  • SSH认证通过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"

当使用Git的bash的命令行,按预期一切正常。

我与TortoiseGit挣扎。
我第一次安装TortoiseGit用的Plink和使用佳丽加载SSH私钥。 自动验证(佳丽)工作,但设置是一个失败,因为TortoiseGit不承认格式化为gitolite@gitbox/repo.git git的回购协议的URL。

于是我决定使用OpenSSH客户端安装TortoiseGit,所以配置文件可以通过SSH客户端读取,并且模仿的git CLI设置。
我拿起随MSYS的ssh.exe的Git在TortoiseGit设置SSH客户端。
在做一个git pull ,远程URL现在已经得到解决,但口令密码询问,而我希望发生的ssh-agent自动认证。

是否有可能使TortoiseGit使用ssh代理工作?
或使TortoiseGit(的Plink)知道的.ssh / config中的?

编辑#1

继@VonC意见,我配置了我的$ HOME变量。
当我点击TortoiseGit 显示环境变量我现在有:

 HOME=C:\Documents and Settings\kraymer  
 HOMEDRIVE=C: 
 HOMEPATH=\Documents and Settings\kraymer 

但是git pull仍然需要我输入密码。

Answer 1:

无调整需要。

只是要TortoiseGit点通过自身的git使用相同的SSH客户端,见截图:

这应该是C:\Program Files\Git\usr\bin\ssh.exe Git中的最新版本由阿列克谢Kontsevich在评论中提到。



Answer 2:

我第一次安装TortoiseGit用的Plink和使用佳丽加载SSH私钥。 自动验证(佳丽)工作,但设置是一个失败,因为TortoiseGit不承认格式化为gitolite@gitbox/repo.git git的回购协议的URL。

我终于发现了由具有相同的名称创建一个PuTTY会话一个变通方法,ssh的别名(即gitbox的问题)。
这样我可以克隆的git clone gitbox/monrepo在CLI和origin语法正确的TortoiseGit处理。



Answer 3:

1)Cygwin的

下面的文章中描述的使用方法: 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,而不是在安装过程中砰砰)。 ! 检查系统变量。 如果有GIT_SSH可变礼物 - 将其删除。

转到TortoiseGit->设置 - >通用

设置Git的exe文件的路径为/ bin设置外部DLL路径/ MinGW的/ bin中

转到TortoiseGit->设置 - >网络设置SSH客户端属性/bin/ssh.exe

定义系统变量SSH_AUTH_SOCKS = C:\ temp.ssh插座

启动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

而已。 从这一刻起,你可以在不提示的密码执行混帐推,从TortoiseGit和MsysGit git的拉动。

当不再需要的ssh-agent你可以通过Windows任务管理器杀了它。



Answer 4:

以上答案都不为我工作。

我创造了这个批处理文件来解决问题。

CALL "C:\Program Files\Git\cmd\start-ssh-agent.cmd"
SETX SSH_AUTH_SOCK "%SSH_AUTH_SOCK%"
SETX SSH_AGENT_PID "%SSH_AGENT_PID%"

运行此一次,并输入您的密码。

然后你就可以在OpenSSH使用tortoisegit,而无需输入密码短语每个操作。



Answer 5:

确保启动您的TortoiseGit在环境HOME定义,并引用的父目录.ssh
因为,在Windows上,HOME默认情况下不定义这一点很重要。

见为例:“ 验证的Windows XP失败,Git和tortoisegit ”。
(其他可能的来源:“ ?如何我告诉混帐的Windows在哪里可以找到我的RSA私钥 ”)



Answer 6:

似乎有一个整体多种选择,以解决这个问题。 由于以上都不是为我工作,我因子评分我会分享什么帮助了我。

截图:网络设定/ Git的SSH客户端

Settings... -> Network -> SSH -> SSH client ,客户端设置到C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe 。 使用佳丽,你将自动为预期的验证,否则将提示您输入您的私钥密码。 确保“自动加载腻子键”选项,在推对话框中选中。



Answer 7:

由于这里的解释是有点过时了,我决定后我的解决方案。

我使用Git Bash和TortoiseGit 2.8.0在Windows 10,这是时下常见的。

我设置ssh.exe为SSH客户端Settings->Network在以前的职位说明。

我创建了一个脚本,用下面的命令,如在之前的评论解释。 您可能还需要设置一个HOME环境变量,如果你的系统不会自动做。 假设你的家是在驱动器H:\你可以添加以下几行:

SETX HOME /h
CALL "C:\Program Files\Git\cmd\start-ssh-agent.cmd"
SETX SSH_AUTH_SOCK "%SSH_AUTH_SOCK%"
SETX SSH_AGENT_PID "%SSH_AGENT_PID%"

我添加使用运标识 + R脚本shell:startup到启动文件夹中。 另外,您也可以将脚本添加到注册表,以保证它之前其他进程运行:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

确保键入exit关闭控制台,并允许变量为未来的进程设置。



文章来源: TortoiseGit with openssh key not authenticating using ssh-agent