我有一个git存储库,我使用类似于此的路径拉取:
git pull ssh://username@host.com:1234/path/to/repository.git
当GitExtensions尝试使用plink从repo中提取时,它会进行此调用:
plink -T username@host.com:/path/to/repository.git
这最终失败了,因为它实际上正在ping端口#22,而不是#1234。
对make的正确调用将是
plink -T -P 1234 username@host.com:/path/to/repository.git
如果我在〜/ .ssh / config中创建一个别名“hostCom”,它似乎正常工作(连接到#1234),如果我这样做:
plink -T username@hostCom
但是,只要我添加git repo的路径,它就会再次进入#22。
我尝试的另一个选项是在putty中创建一个会话,让我们称之为“hostPutty”,并在那里设置默认端口等。尽管底线最终是相同的:无法将路径与git repo组合在一起端口。
如何组合所有部件以使其起作用?
OpenSSH怎么能解决这个问题,但是Putty不能解决? OpenSSH的唯一问题是它在每次连接尝试时都不断询问我私钥的密码(我不想在没有密码的情况下创建私钥)。
答案 0 :(得分:11)
弄清楚了。
这就是让我走错路的原因:
以下是您如何运作:
c:\>echo %GIT_SSH% C:\tools\PuTTY\plink.exe
在上面的示例中,使用“完整”命令来提取,不允许您不指定端口等的主机别名。如果缺少端口,并且只有一个冒号,git将其视为路径分隔符,并将ssh视为端口分隔符(因此它们会将每个端口分别很糟糕)。
git clone ssh://username@host.com:1234 / path / to / repository.git
如果你这样做,Git + plink实际上可以解决问题!
如果你不这样做,你可能遇到各种各样的问题,如:
ssh.exe": hostPutty:path: no address associated with name fatal: The remote end hung up unexpectedly
error: cannot spawn "C:\tools\PuTTY\plink.exe": No such file or directory fatal: unable to fork
答案 1 :(得分:1)
对我来说,我一直收到主机名不存在的错误。在对此线程和其他线程尝试了一堆建议后,我检查了我的远程URL,这是罪魁祸首。如果您使用putty,请确保它以git@github.com而不是https://github
开头