Tengo mi repositorio de Git en mi máquina, que no tiene IP pública propia, en casa; Quiero clonar este repositorio en mi servidor web. ¿Es correcto que un túnel inverso me permita tirar de mi máquina al servidor? ¿Qué comando (s) doy para realizar el clon? Mi máquina local ejecuta Windows; el servidor ejecuta Ubuntu.Clon de Git a través de un túnel inverso
Respuesta
En principio, se puede hacer algo como
ssh -R 2222:localhost:22 [email protected]
y luego utilizar en su servidor web
git clone ssh://[email protected]:2222/path/to/repo.git/
Esto cifrar los datos dos veces, sin embargo.
Como alternativa, puede utilizar cualquiera de los otros protocolos que admite git, y reenviar los puertos correctos para estos.
También se puede poner una sección como esta en ~/.ssh/config:
Host my-server
HostName localhost
ForwardX11 no
Port 2222
continuación, puede utilizar este comando clon: git clone [email protected]:mytools/projectName.git
. (Esto le permite almacenar la clave del servidor no como perteneciente a localhost
, y hace que la URL en su configuración de git sea más clara.)
Para su servidor (tanto el servidor de túnel como el host final) generalmente quiere autenticarse por público -key autorización, para esto debes poner la clave privada (ej. id_rsa) en tu directorio ~/.ssh. (Y todos los archivos allí, específicamente la clave privada, deben ser legibles solo para su usuario, y el directorio solo para su usuario).
Todo esto no es específico para el túnel, sino cosas genéricas de SSH.
Puede abrir el puerto ssh en su cortafuegos y configurar el enrutamiento en su enrutador para golpear su máquina. Solo necesitarás la IP que expone tu enrutador.
No he probado esto por mi cuenta (y no puedo decir lo bien que trata con NAT), pero parece que DynDNS podría ser una solución a su problema. Proporciona una URL pública a su máquina doméstica que incluso puede actualizarse automáticamente. Desde su support page:
La libre Dynamic DNS servicio proporciona una manera fácil de recordar URL para el acceso remoto a la red rápida . Esto le permite llegar a servicios en el hogar, tales como un web, cámaras de seguridad, VPN, juego servidor, y más, usando un simple dirección web como http://myhome.dyndns.org/, en lugar de un sentido, siempre cambiante IP dirección como http://123.45.67.89. Usted puede learn more about how Dynamic DNS works here.
Por supuesto, debido a que esto facilitará el acceso de otras personas a su computadora, también debe tomar las medidas de seguridad apropiadas. Sin embargo, si funciona, puede ingresar a su máquina doméstica a través de la URL DynDNS.
Gracias, Chris (+1). Todavía tengo que probar esta solución. – Brian
Se podría empujar los cambios en el servidor web, en lugar de tratar de tirar de ellos:
Establecer un repos en el servidor web:
cd /somedir
git init --bare
Pulsar para que las cesiones temporales de su máquina dev:
git remote add web [email protected]:/somedir
git push web master
Si usted quiere empujar a un repos no desnudos (por ejemplo, si su aplicación web se ejecuta en un check out), entonces usted tendrá que empujar a una rama que no está marcada actualmente fuera y luego se fusionan en
es decir, en su máquina dev:.
git push web master:master-from-dev
inicie la sesión en la máquina web y hacer:
git merge master-from-dev
Otra alternativa es la creación de un repositorio desnudo en su servidor, y empujar a él desde su máquina local. Ingresa desde allí en el repositorio de tu servidor.
Hay muchas ventajas:
- que no tiene que exponer su máquina privada
- se puede trabajar desde múltiples máquinas (por ejemplo, su ordenador portátil y el escritorio), cada uno de los cuales tiene un clon de su informe vacío
- incluso puede hacer parches en su servidor, presionar al repositorio desnudo, y tirar de ellos en su máquina en funcionamiento.
Ver http://joemaller.com/990/a-web-focused-git-workflow/ para una buena descripción.
- 1. Monitor de túnel SSH inverso
- 2. ¿Es posible hacer haber Capistrano hacer una obtención través de un túnel SSH inverso?
- 3. ¿Es posible un túnel SSH a través de Citrix Client?
- 4. ftp a través del túnel SSH
- 5. Faltan archivos de un clon git
- 6. Reanudar clon git-svn
- 7. Acceso a LDAP a través del túnel SSH
- 8. Propagar una ubicación remota a través de clon/push/pull
- 9. ganchos git: ¿hay un gancho clon?
- 10. git clon del árbol git-svn?
- 11. git-svn clon | ramas espurias
- 12. recuperarse de Git-Svn clon sin --stdlayout
- 13. ¿Cómo crear un clon git con ramas de un "subproyecto"?
- 14. partes clon de un proyecto github
- 15. cómo separar alternativas después de clon git --reference?
- 16. Git clon no trae rama principal
- 17. PHP conectar a través de túnel SSH a LDAP en otra red
- 18. git fetch/tirón/clon cuelga en la recepción de objetos
- 19. -git svn clon o svn2git inesperadamente detener
- 20. Cómo convertir un clon git de solo lectura de github a uno bifurcado
- 21. Clon parcial con Git y Mercurial
- 22. git: // a través del proxy
- 23. git push a través de cron
- 24. descarga de git, no copia de clon, etc.
- 25. Cómo depurar un túnel ssh
- 26. ¿Por qué mis activos no se sirven a través de un proxy inverso en apache
- 27. Uso de Oracle db a través del túnel ssh. Error "ORA-12541: TNS: sin escucha"
- 28. git svn - clon repo con todos los externos
- 29. ¿Cómo me puedo conectar al servidor Oracle Database 11g a través de la cadena de túnel ssh (túnel doble, servidor en la red de la empresa)?
- 30. ¿Hay un inverso de System.Diagnostics.ConditionalAttribute?
Lamentablemente, se cuelga después de producir el mensaje "Repositorio de Git vacío inicializado en", incluso con el más pequeño de los repositorios. Puedo ver que la comunicación avanza sobre SSH hacia atrás y hacia delante a través de Wireshark. ¿Alguna idea a alguien? –
Brian
Usted mencionó los otros protocolos; ¿Podría indicarme otras formas de hacer esto? – Brian
¿Tiene un servidor SSH en su máquina con Windows? –