使用 tortoisehg 在 Windows 下通过 ssh 代理访问远程 mercurial 存储库

使用 tortoisehg 在 Windows 下通过 ssh 代理访问远程 mercurial 存储库

我在服务器上有一个远程 mercurial 存储库(由 hg-gateway 管理)。该服务器的访问权限不向公众开放;但是,防火墙允许 ssh 代理。

如何配置 Windows 客户端以使用 tortoisehg 访问该存储库?

请注意,它不同于,因为这个问题不涉及代理。我正在寻找 windows 等效的

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

用于访问 mercurial repo

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 密钥。Google 是你的好朋友。

假设:

  1. 防火墙上有一个名为“ hg”的用户,其.ssh/autorhized_keys文件包含必须访问存储库的所有用户的公钥
  2. 防火墙的文件 /etc/ssh/sshd_config 包含类似以下内容的行:

    Match Group dev
        ForceCommand nc -q0 reposerver_ip 22
    

    因此用户无法指定要连接的主机。用户“ hg”显然属于 unix 组“ dev”。

相关内容