2011-01-22 10 views
7

Me gustaría clonar un repositorio git de los servidores de mi empresa en mi computadora personal. La única manera de acces estos servidores desde "fuera" es ingresando por ssh a 'machine1'Git clone desde el repositorio remoto de ssh: cambie la máquina en la red remota antes de ejecutar el comando de clonación

ssh [email protected] 

Por desgracia, no está en Git no está instalado en esa máquina específica. Por lo tanto, un clon git como

git clone ssh://[email protected]/path/to/repo <local-repo-path> 

no funcionará. Lo que tendría que hacer es cambiar a otra máquina 'machine2' donde git está instalado después de haber iniciado sesión en la red a través de 'machine1'. Para que el clon funcione, tendría que ejecutar un comando como

ssh machine2 

antes de ejecutar realmente el comando git. ¿Hay alguna forma de hacer eso? Algo como un gancho pre-clon tal vez?

¿Es posible empacar de algún modo el repositorio remoto en un archivo (¿parche?), Copiar ese archivo en la máquina local y clonar desde ese archivo?

¡Esperamos sus sugerencias y sugerencias!

Respuesta

13

Puede hacerlo configurando un comando proxy ssh. Nota: esto supone que netcat está disponible en el servidor proxy; Puedes reemplazar netcat con un script similar en Perl o lo que sea necesario.

Añadir lo siguiente a su ~/.ssh/config, creando si es necesario:

Host machine1 
User yourusername 
HostName machine1.yourcompany.com 

Host machine2 
User yourusername 
ProxyCommand ssh machine1 nc %h %p 
HostName machine2.internal.network 

Ahora usted puede ssh machine2 y lo hará a través del túnel de forma automática machine1. Esto significa que usar git es tan simple como git clone ssh://machine2/path.

También es posible agrupar el repositorio en un solo archivo, utilizando el comando git bundle. Sin embargo, esto no debería ser necesario con una configuración proxy ssh adecuada.

+0

Esto suena como una gran solución. Desafortunadamente, netcat obviamente no sale en la máquina remota. Es una arquitectura sparc con SunOS 10. ¿Existe alguna alternativa a netcat que pueda usar? – Deve

+1

El único requisito es armar un programa simple que se retransmitirá desde stdin/stdout a algún host remoto arbitrario; probablemente puedas juntar algunas secuencias de comandos simples en los lenguajes de scripting que estén disponibles allí, o compilar netcat o socat o algo así y ponerlos en tu directorio de inicio – bdonlan

+0

Bien, entiendo a qué te refieres. Parece un desafío para mí, pero lo intentaré lo mejor posible. ¡Gracias de nuevo! – Deve

Cuestiones relacionadas