2012-09-06 38 views
5

我有一個Git倉庫,我拉使用類似這樣的路徑:GitExtensions +膩子通過SSH自定義端口上

git pull ssh://[email protected]:1234/path/to/repository.git 

當GitExtensions然後嘗試使用砰砰回購拉,它使這個調用:

plink -T [email protected]:/path/to/repository.git 

這最終失敗,因爲它實際上是ping#22端口,而不是#1234。

做出正確的通話將

plink -T -P 1234 [email protected]:/path/to/repository.git 

如果我在的〜/ .ssh/config中創建一個別名「hostCom」,它似乎正常工作(連接#1234),如果我只是做這個:

plink -T [email protected] 

但是,只要我將路徑添加到git倉庫,它也會再次進入#22。

我嘗試的另一個選擇是在putty中創建一個會話,我們將其稱爲「hostPutty」,並將默認端口設置爲此等等。底線結束是相同的:雖然:無法將路徑與git repo結合自定義端口。

如何合併所有零件以使其工作?

而OpenSSH如何處理這個問題,但膩子不能? OpenSSH唯一的問題是在每次連接嘗試時都會向我詢問私鑰的密碼(並且我不想在沒有密碼的情況下創建私鑰)。

回答

9

明白了。

這裏是讓我錯了路:

  • 不要在膩子產生任何會議所概述here
  • 不要使用你可能在定義任何主機別名的〜/ .ssh/config中

這裏是你如何得到它的工作:

  • 顯然確保GitExtens離子被設置爲使用膩子,不OpenSSH的
  • 確保plink.exe(一可用GitExtensions或用膩子專門安裝)是不帶空格
  • 設置你的環境變量%GIT_SSH%的路徑指向砰砰。 exe(它可能指向ssh.exe默認情況下),請確保沒有撇號,因爲該值將按原樣使用(這就是爲什麼您不能使用上述空格)
c:\>echo %GIT_SSH% 
    C:\tools\PuTTY\plink.exe 
  • 在上面的示例中,使用「完整」命令來拉出,沒有允許您不指定端口等的主機別名。如果端口丟失,並且只有一個冒號,那麼git將它視爲一個路徑分隔符,並將ssh作爲端口分隔符(因此它們每個都很糟糕)。

    混帳克隆SSH://[email protected]:1234 /路徑/到/ repository.git

如果你這樣做的Git +砰砰實際上搞清楚這些事情吧!

如果你不這樣做,這樣,你可能會遇到各種各樣的問題,如:

  • 不得不%GIT_SSH%指着ssh.exe和使用主機別名來代替路徑含。端口
ssh.exe": hostPutty:path: no address associated with name 
    fatal: The remote end hung up unexpectedly 
  • 在%GIT_SSH%用於撇號
error: cannot spawn "C:\tools\PuTTY\plink.exe": No such file or directory 
    fatal: unable to fork 
0

對於我來說,我一直得到該主機名不存在錯誤。在嘗試了關於這個和其他線程的一堆建議之後,我檢查了我的遠程URL,這是罪魁禍首。如果您使用的膩子,確保它與[email protected]開始不https://github

Here's an examplpe of how to check this in git extensions