
我在伺服器上有一個遠端 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
系統管理假設位於本文末。
- 從以下位置下載並安裝 putty、plink、pageant 和 puttygen這裡
- 如果您沒有 ssh 金鑰,請啟動 puttygen 並:
- 如果已經有 linux 產生的金鑰:
- 選擇“載入現有私鑰檔案”
- 選擇適當的檔案(必須更改檔案副檔名過濾器)
- 插入密碼
- 選擇“儲存私鑰”
- 別的,
- 選擇“產生密鑰”
- 隨機移動滑鼠
- 選擇“儲存私鑰”
- 選擇“儲存公鑰”
- 如果已經有 linux 產生的金鑰:
- 向您的系統管理員發送公鑰而不是私鑰! (系統管理員:請閱讀下文)
- 執行 Windows 命令提示字元(開始 > 執行並輸入“cmd”)並啟動“pageant.exe”
- 右鍵單擊圖標欄中的圖標,“添加密鑰”
- 選擇您之前儲存的私鑰,插入密碼
發射膩子
- 在主機名稱中輸入:您的儲存庫伺服器的 IP 位址
- 將會話儲存為“
remote-dev
”(任何名稱都可以) - 前往連接>代理
- 選擇“本地”作為代理類型
- 代理主機名稱:您的防火牆 DNS 項目或 IP 位址
- 連接埠:(
22
或任何適合 ssh 進入防火牆的連接埠) - 使用者名稱:(
hg
或防火牆上的任何使用者在 .ssh/authorized_files 中擁有您的公共 ssh 金鑰) - 在「telnet 指令或本機代理程式」中將內容替換為「
FULLPATH\plink.exe -v -nc %host:%port %user@%proxyhost
」(請注意使用執行檔 plink.exe 的完整路徑。例如 c:\plink.exe) - 前往連接 > 數據
- 自動登入使用者名稱:hg(或儲存庫伺服器上執行 hg-gateway 的任何使用者)
- 返回“會話”
- 點擊“儲存”以儲存會話
- 點擊“打開”
你應該會看到類似的東西
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:
現在下載並安裝烏龜
- 啟動 tortoisehg 工作台
- 檔案 > 克隆儲存庫
- 來源: ssh://
remote-dev
/repo-name
(remote-dev 必須與您在 putty 中呼叫的會話相符!) - 目的地:選擇您當地的目的地
- 點擊“克隆”
- 就是這樣。
若要允許使用者存取遠端儲存庫:
- 將公共 ssh 金鑰新增至防火牆上
.ssh/authorized_keys
的用戶hg
- 用於
hg-gateway
將該用戶的金鑰新增至hg
伺服器上的用戶
注意:putty 傾向於產生 .ppk 格式的金鑰;它們必須轉換為單行 ssh 金鑰。谷歌是你的朋友。
假設:
- 在防火牆上有一個名為「
hg
」的用戶,其.ssh/autorhized_keys
檔案包含必須存取儲存庫的所有用戶的公鑰 防火牆的檔案 /etc/ssh/sshd_config 包含類似下列內容的行:
Match Group dev ForceCommand nc -q0 reposerver_ip 22
這樣使用者就無法指定要連線到的主機。使用者「
hg
」顯然屬於unix群組「dev
」。