我设置了在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
仍然需要我输入密码。
无调整需要。
只是要TortoiseGit点通过自身的git使用相同的SSH客户端,见截图:
这应该是C:\Program Files\Git\usr\bin\ssh.exe
Git中的最新版本由阿列克谢Kontsevich在评论中提到。
我第一次安装TortoiseGit用的Plink和使用佳丽加载SSH私钥。 自动验证(佳丽)工作,但设置是一个失败,因为TortoiseGit不承认格式化为gitolite@gitbox/repo.git git的回购协议的URL。
我终于发现了由具有相同的名称创建一个PuTTY会话一个变通方法,ssh的别名(即gitbox的问题)。
这样我可以克隆的git clone gitbox/monrepo
在CLI和origin
语法正确的TortoiseGit处理。
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任务管理器杀了它。
以上答案都不为我工作。
我创造了这个批处理文件来解决问题。
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,而无需输入密码短语每个操作。
确保启动您的TortoiseGit在环境HOME
定义,并引用的父目录.ssh
。
因为,在Windows上,HOME默认情况下不定义这一点很重要。
见为例:“ 验证的Windows XP失败,Git和tortoisegit ”。
(其他可能的来源:“ ?如何我告诉混帐的Windows在哪里可以找到我的RSA私钥 ”)
似乎有一个整体多种选择,以解决这个问题。 由于以上都不是为我工作,我因子评分我会分享什么帮助了我。
截图:网络设定/ Git的SSH客户端
在Settings... -> Network -> SSH -> SSH client
,客户端设置到C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
。 使用佳丽,你将自动为预期的验证,否则将提示您输入您的私钥密码。 确保“自动加载腻子键”选项,在推对话框中选中。
由于这里的解释是有点过时了,我决定后我的解决方案。
我使用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
关闭控制台,并允许变量为未来的进程设置。