
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.
- descargue e instale PuTTY, Plink, Pageant y Puttygen desdeaquí
- Si no tienes una clave ssh, inicia puttygen y:
- Si ya tiene una clave generada por Linux:
- seleccione 'cargar un archivo de clave privada existente'
- seleccione el archivo apropiado (debe cambiar el filtro de extensión de archivo)
- insertar frase de contraseña
- seleccione 'guardar clave privada'
- demás,
- seleccione 'generar clave'
- mover el mouse aleatoriamente
- seleccione 'guardar clave privada'
- seleccione 'guardar clave pública'
- Si ya tiene una clave generada por Linux:
- ¡Envíe a su administrador de sistemas la CLAVE PÚBLICA, no la clave privada! (administradores de sistemas: lea a continuación)
- ejecute un símbolo del sistema de Windows (iniciar > ejecutar y escriba 'cmd') e inicie 'pageant.exe'
- haga clic derecho en el ícono en la barra de íconos, 'agregar clave'
- seleccione su clave PRIVADA que guardó antes, inserte la frase de contraseña
masilla de lanzamiento
- en el nombre de host ponga: la dirección IP de su servidor de repositorio
- guardar sesión como '
remote-dev
' (cualquier nombre está bien) - ir a conexión > proxy
- seleccione 'local' para el tipo de proxy
- nombre de host proxy: la entrada DNS o dirección IP de su firewall
- puerto:
22
(o lo que sea apropiado para ssh en el firewall) - nombre de usuario:
hg
(o cualquier usuario en el firewall que tenga su clave ssh pública en .ssh/authorized_files) - 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) - ir a conexión > datos
- 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)
- volver a 'sesión'
- haga clic en 'guardar' para guardar la sesión
- haga clic en 'abrir'
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:
ahora descargue e instaletortuga
- lanzar banco de trabajo tortoisehg
- archivo > clonar repositorio
- fuente: ssh://
remote-dev
/repo-name
(¡el desarrollo remoto tiene que coincidir con el nombre que hayas llamado a tu sesión en PuTTY!) - destino: elige tu destino local
- haga clic en 'clonar'
- eso es todo.
Para permitir que un usuario acceda al repositorio remoto:
- agregue la clave ssh pública
.ssh/authorized_keys
del usuariohg
en el firewall - utilizar
hg-gateway
para agregar la clave de ese usuario alhg
usuario 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:
- en el firewall hay un usuario llamado '
hg
' cuyo.ssh/autorhized_keys
archivo contiene las claves públicas de todos los usuarios que deben acceder al repositorio 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
'.