簡體   English   中英

Windows上通過ssh的Mercurial“ hg clone”(帶有plink問題)

[英]Mercurial “hg clone” on Windows via ssh with plink issue

我有一台安裝了CopSSH的Windows Server 2008計算機(iis7)。 要連接到它,我有一台裝有Mercurial 1.5.1(和TortoiseHg)的Windows 7計算機。

我可以使用帶有非標准ssh端口和.ppk文件的PuTTY連接到服務器。 因此,我知道服務器可以通過SSH登錄。

接下來,我想使用CLI通過hg clone連接以獲得私有存儲庫。 我在其他地方看到過,您需要在mercurial.ini文件中配置ssh,所以我的mercurial.ini有一行: ssh = plink.exe -ssh -C -l username -P #### -i "C:/Program Files/PuTTY/Key Files/KyleKey.ppk"
注意:
username用我通過copSSH設置的用戶名填寫。
####填充了我為copSSH定義的非標准ssh端口。

我嘗試執行命令hg clone ssh://inthom.com但出現此錯誤:
remote: bash: inthom.com: command not found
abort: no suitable response from remote hg!

看起來hg或plink解析了主機名,以至於它認為inthom.com是命令而不是要SSH的服務器。 真的很奇怪

接下來,我嘗試僅使用plink通過plink -P #### ssh://inthom.com進行連接,然后提示我輸入用戶名和下一個密碼。 我都輸入它們,然后出現此錯誤:
bash: ssh://inthom.com: No such file or directory

因此,現在看來plink無法正確解析主機名。

我擺弄了一段時間,試圖弄清楚如何用一個空的ssh://字段調用hg clone,最終弄清楚了該命令使我可以到達服務器並在inthom.com服務器上克隆測試倉庫:
hg clone ssh://!/Repos/test

! 是我發現的字符,讓我將主機名保留為空白,但指定要克隆的repo文件夾。

我真正不明白的是,plink完全不知道要使用哪個服務器。 我的mercurial.ini和命令都未指定服務器。 我見過的所有hg clone示例都沒有! 字符。 它們都使用一個有意義的地址,因此您可以通過要克隆的ssh連接到任何存儲庫。

我唯一的猜測是它以某種方式默認為我使用PuTTY進行SSH交換的最后一台服務器,但是我SSH到另一台服務器,然后嘗試使用plink來訪問它,但plink仍默認為inthom.com(已通過驗證) -v arg進行鏈接)。 因此,我對plink如何獲得此服務器值一無所知。

對於“樂趣”,我嘗試使用TortoiseHg,並且僅當我使用ssh://!/Repos/test作為源時才能克隆回購。

現在,您可以看到,由於plink不能正確解析主機名,因此我不得不在mercurial.ini文件中指定端口號和用戶名,而不是在諸如username@inthom.com這樣的主機名中指定:#### like您會期望的。 起初試圖弄清楚這一點使我發瘋,因為我會收到無法到達主機的錯誤,我知道事實並非如此。

我的問題是如何配置我的設置,以便將ssh://username@inthom.com:#### / Repos / test正確解析為用戶名,主機名,端口號和要復制的存儲庫? 我使用的plink版本是否有問題,或者我可能搞砸了某些設置? 如果是plink的錯,是否可以使用其他工具?

我將嘗試建立我的朋友以連接到同一倉庫,所以我想有一個干凈的解決方案,而不是這個! 商業。 尤其是當我不知道plink如何獲得此默認服務器時,因此我不確定他是否能夠正確訪問inthom.com。

PS。 我不得不使用大量不同的教程才能達到這一階段。 因此,我還沒有嘗試對服務器進行任何更改。 希望我能弄清楚這一點,然后我可以嘗試將更改推送到存儲庫。

我知道我來晚了,但現在好了,再也沒有了。 好的,所以...用於連接到Mercurial SSH的命令

ssh = plink.exe -ssh -C -l用戶名-P #### -i“ C:/ Program Files / PuTTY / Key Files / KyleKey.ppk”

完全可以,但是問題出在Plink。

Plink的名稱中包含空格的文件夾存在問題。 所以,問題出在

“ C:/程序文件/ PuTTY /密鑰文件/KyleKey.ppk”

您有兩種選擇:

  1. 您可以將此“ KyleKey.ppk”文件移動到名稱中沒有空格的路徑中。 例如,您可以在“ C:\\”或“ D:\\ Path \\ Without \\ Space \\ In \\ Name”中移動此文件。

  2. 您可以使用Windows短路徑名。 例如,我有

    ssh =“ C:\\ Progra〜2 \\ Plink \\ Plink.exe” -ssh -i“ C:\\ Progra〜2 \\ PuTTYgen \\ hrle.ppk”

    在我的“ Mercurial.ini”中。

    “ C:\\ Progra〜2”是“ C:\\ Program Files(x86)”。

如果SSH私鑰受密碼保護,則Plink將掛起。

同樣,您必須添加此服務器才能知道服務器列表,甚至在將Plink與TortoiseHg或其他一些GUI工具(如MercurialEclipse)結合使用之前也是如此。 如果您不這樣做,Plink將掛起等待您的響應,您將無法給出響應,因為您使用的是TortoiseHg,而不是在命令行中。 有關此子項目的更多信息,請參見AccessingSshRepositoriesFromWindows

使用plink時,您無需使用ssh://協議標識符。 您可以簡單地使用{user} @ {host}:{path}格式,即可正常使用。

例:

plink -ssh -C -l {用戶名} -pw {pass} -P 22 -i“ C:/ Program Files / PuTTY / Key Files / KyleKey.ppk” inthom.com:/Repos/test

將{username}替換為用戶,並將{pass}替換為密碼。

喲,我有同樣的問題。 我的設置存在問題,是plink使用的是膩子中的默認服務器,而不是我提供的默認服務器。 我必須打開膩子並刪除默認服務器,然后保存。 嘗試在沒有服務器的情況下使用plink。如果您的命令通過,則您具有默認服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM