windows下使用tortoisehg透過ssh代理存取遠端mercurial倉庫

windows下使用tortoisehg透過ssh代理存取遠端mercurial倉庫

我在伺服器上有一個遠端 Mercurial 儲存庫(由 hg-gateway 管理)。對該伺服器的存取不對公眾開放;但是,防火牆允許 ssh 代理。

如何設定 Windows 用戶端以使用 tortoisehg 存取該儲存庫?

請注意,它不同於,因為在該問題中不涉及代理。我正在尋找相當於Windows

Host remote-dev
    user mercurialuser
    ProxyCommand ssh -q firewalluser@firewall

用於存取 Mercurial 儲存庫,例如

hg clone ssh://remote-dev/repo

我找到了一個可行的解決方案,為了社區的利益,我將其發佈在下面的答案中。

答案1

系統管理假設位於本文末。

  1. 從以下位置下載並安裝 putty、plink、pageant 和 puttygen這裡
  2. 如果您沒有 ssh 金鑰,請啟動 puttygen 並:
    1. 如果已經有 linux 產生的金鑰:
      1. 選擇“載入現有私鑰檔案”
      2. 選擇適當的檔案(必須更改檔案副檔名過濾器)
      3. 插入密碼
      4. 選擇“儲存私鑰”
    2. 別的,
      1. 選擇“產生密鑰”
      2. 隨機移動滑鼠
      3. 選擇“儲存私鑰”
      4. 選擇“儲存公鑰”
  3. 向您的系統管理員發送公鑰而不是私鑰! (系統管理員:請閱讀下文)
  4. 執行 Windows 命令提示字元(開始 > 執行並輸入“cmd”)並啟動“pageant.exe”
  5. 右鍵單擊圖標欄中的圖標,“添加密鑰”
  6. 選擇您之前儲存的私鑰,插入密碼
  7. 發射膩子

    1. 在主機名稱中輸入:您的儲存庫伺服器的 IP 位址
    2. 將會話儲存為“ remote-dev”(任何名稱都可以)
    3. 前往連接>代理
    4. 選擇“本地”作為代理類型
    5. 代理主機名稱:您的防火牆 DNS 項目或 IP 位址
    6. 連接埠:(22或任何適合 ssh 進入防火牆的連接埠)
    7. 使用者名稱:(hg或防火牆上的任何使用者在 .ssh/authorized_files 中擁有您的公共 ssh 金鑰)
    8. 在「telnet 指令或本機代理程式」中將內容替換為「FULLPATH\plink.exe -v -nc %host:%port %user@%proxyhost」(請注意使用執行檔 plink.exe 的完整路徑。例如 c:\plink.exe)
    9. 前往連接 > 數據
    10. 自動登入使用者名稱:hg(或儲存庫伺服器上執行 hg-gateway 的任何使用者)
    11. 返回“會話”
    12. 點擊“儲存”以儲存會話
    13. 點擊“打開”
    14. 你應該會看到類似的東西

      Using username "hg".
      Authenticating with public key "imported-openssh-key" from agent
      Welcome to XXX code repository server!
      Your SSH access is restricted by hg-gateway.
      Summary of repos you have access to:
      
  8. 現在下載並安裝烏龜

  9. 啟動 tortoisehg 工作台
  10. 檔案 > 克隆儲存庫
  11. 來源: ssh:// remote-dev/ repo-name(remote-dev 必須與您在 putty 中呼叫的會話相符!)
  12. 目的地:選擇您當地的目的地
  13. 點擊“克隆”
  14. 就是這樣。

若要允許使用者存取遠端儲存庫:

  1. 將公共 ssh 金鑰新增至防火牆上.ssh/authorized_keys的用戶hg
  2. 用於hg-gateway將該用戶的金鑰新增至hg伺服器上的用戶

注意:putty 傾向於產生 .ppk 格式的金鑰;它們必須轉換為單行 ssh 金鑰。谷歌是你的朋友。

假設:

  1. 在防火牆上有一個名為「hg」的用戶,其.ssh/autorhized_keys檔案包含必須存取儲存庫的所有用戶的公鑰
  2. 防火牆的檔案 /etc/ssh/sshd_config 包含類似下列內容的行:

    Match Group dev
        ForceCommand nc -q0 reposerver_ip 22
    

    這樣使用者就無法指定要連線到的主機。使用者「hg」顯然屬於unix群組「dev」。

相關內容