Accediendo a un repositorio mercurial remoto a través de un proxy ssh en Windows con tortoisehg

Accediendo a un repositorio mercurial remoto a través de un proxy ssh en Windows con tortoisehg

Tengo un repositorio mercurial remoto (administrado por hg-gateway) en un servidor. El acceso a ese servidor no está abierto al público en general; sin embargo, el firewall permite el proxy ssh.

¿Cómo configuro un cliente de Windows para acceder a ese repositorio con tortoisehg?

Tenga en cuenta que es diferente deeste, ya que en esa pregunta no hay ningún proxy involucrado. Estoy buscando el equivalente de Windows de

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

para acceder a un repositorio mercurial como

hg clone ssh://remote-dev/repo

Encontré una solución que funciona y la publicaré a continuación en las respuestas para beneficio de la comunidad.

Respuesta1

Los supuestos de administración del sistema se encuentran al final de esta publicación.

  1. descargue e instale PuTTY, Plink, Pageant y Puttygen desdeaquí
  2. Si no tienes una clave ssh, inicia puttygen y:
    1. Si ya tiene una clave generada por Linux:
      1. seleccione 'cargar un archivo de clave privada existente'
      2. seleccione el archivo apropiado (debe cambiar el filtro de extensión de archivo)
      3. insertar frase de contraseña
      4. seleccione 'guardar clave privada'
    2. demás,
      1. seleccione 'generar clave'
      2. mover el mouse aleatoriamente
      3. seleccione 'guardar clave privada'
      4. seleccione 'guardar clave pública'
  3. ¡Envíe a su administrador de sistemas la CLAVE PÚBLICA, no la clave privada! (administradores de sistemas: lea a continuación)
  4. ejecute un símbolo del sistema de Windows (iniciar > ejecutar y escriba 'cmd') e inicie 'pageant.exe'
  5. haga clic derecho en el ícono en la barra de íconos, 'agregar clave'
  6. seleccione su clave PRIVADA que guardó antes, inserte la frase de contraseña
  7. masilla de lanzamiento

    1. en el nombre de host ponga: la dirección IP de su servidor de repositorio
    2. guardar sesión como ' remote-dev' (cualquier nombre está bien)
    3. ir a conexión > proxy
    4. seleccione 'local' para el tipo de proxy
    5. nombre de host proxy: la entrada DNS o dirección IP de su firewall
    6. puerto: 22(o lo que sea apropiado para ssh en el firewall)
    7. nombre de usuario: hg(o cualquier usuario en el firewall que tenga su clave ssh pública en .ssh/authorized_files)
    8. en 'comando telnet o proxy local' reemplace el contenido con ' FULLPATH\plink.exe -v -nc %host:%port %user@%proxyhost' (tenga en cuenta que utilice la ruta COMPLETA del ejecutable plink.exe, como c:\plink.exe)
    9. ir a conexión > datos
    10. nombre de usuario de inicio de sesión automático: hg (o cualquier usuario en el servidor del repositorio que tenga hg-gateway ejecutándose)
    11. volver a 'sesión'
    12. haga clic en 'guardar' para guardar la sesión
    13. haga clic en 'abrir'
    14. deberías ver algo como

      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. ahora descargue e instaletortuga

  9. lanzar banco de trabajo tortoisehg
  10. archivo > clonar repositorio
  11. fuente: ssh:// remote-dev/ repo-name(¡el desarrollo remoto tiene que coincidir con el nombre que hayas llamado a tu sesión en PuTTY!)
  12. destino: elige tu destino local
  13. haga clic en 'clonar'
  14. eso es todo.

Para permitir que un usuario acceda al repositorio remoto:

  1. agregue la clave ssh pública .ssh/authorized_keysdel usuario hgen el firewall
  2. utilizar hg-gatewaypara agregar la clave de ese usuario al hgusuario en el servidor

Una nota: PuTTY tiende a generar claves en formato .ppk; deben convertirse en una clave ssh de una sola línea. Google es tu amigo aqui.

Supuestos:

  1. en el firewall hay un usuario llamado ' hg' cuyo .ssh/autorhized_keysarchivo contiene las claves públicas de todos los usuarios que deben acceder al repositorio
  2. el archivo /etc/ssh/sshd_config del firewall contiene una línea similar a:

    Match Group dev
        ForceCommand nc -q0 reposerver_ip 22
    

    para que el usuario NO PUEDA especificar a qué hosts conectarse. El usuario ' hg' obviamente pertenece al grupo Unix ' dev'.

información relacionada