Hay algunas opciones, dependiendo de cuáles sean sus requisitos, en particular sus necesidades de seguridad. Tanto para HTTP como para SSH, hay acceso sin contraseña o con contraseña requerida.
HTTP
==============
Sin contraseña
Útil para los requisitos de búsqueda solamente, por defecto, la inserción está deshabilitada. Perfecto si la clonación anónima es la intención. Definitivamente no debería habilitar push para este tipo de configuración. La página de manual de git-http-backend contiene buena información, copia en línea en http://www.kernel.org/pub/software/scm/git/docs/git-http-backend.html. Proporciona un ejemplo de cómo configurar apache para proporcionar esto.
Usuario/contraseña en .netrc o URL incrustada
Donde se usan los archivos .netrc en la forma:
machine <hostname> login <username> password <password>
Y las direcciones URL incrustadas tendrían el formato:
http://user:[email protected]/repo
Dado que git no realizará la autenticación por usted, deberá configurar un servidor web como apache para realizar la autenticación, antes de pasar la solicitud a las herramientas de git. También tenga en cuenta que usar el método incrustado es un riesgo de seguridad, incluso si usa https, ya que es parte de la URL que se solicita.
Si desea poder obtener información no interactiva, pero evitar que los usuarios anónimos accedan al repositorio de git, esta debería ser una solución razonablemente liviana que use apache para la autenticación básica y, preferiblemente, el archivo .netrc para almacenar las credenciales. Como un pequeño problema, git habilitará el acceso de escritura una vez que se use la autenticación, por lo tanto, use http anónimo para solo lectura o deberá realizar alguna configuración adicional si desea evitar que el usuario no interactivo tenga acceso de escritura. .
Ver:
- httpd.apache.org/docs/2.4/mod/mod_auth_basic.html para obtener más información sobre cómo configurar la autenticación básica
- www.kernel.org/pub/software/scm/git/docs/git-http-backend.html para ver algunos ejemplos de la configuración de apache necesaria.
SSH
==============
Sin frase de contraseña
Se abre por problemas de seguridad, ya que cualquiera que pueda obtener la clave privada ssh ahora puede actualizar el repositorio remoto de git como este usuario. Si desea usar esto de forma no interactiva, le recomiendo instalar algo como gitolite para que sea un poco más fácil asegurarse de que aquellos con la clave privada ssh solo puedan extraer del repositorio, y requiere un par de claves ssh diferente para actualizar el repositorio.
Consulte github.com/sitaramc/gitolite/ para obtener más información sobre gitolite.
stromberg.dnsalias.org/~strombrg/ssh-keys.html - para crear claves ssh sin contraseña:También puede querer cubrir la gestión de múltiples claves ssh:www.kelvinwong.ca/2011/03/30/multiple-ssh-private- claves-archivo de identidad/
Fase de paso protegida
Puede usar ssh-agent para desbloquear por sesión, solo realmente útil para la obtención interactiva de git. Dado que menciona la raíz y solo habla de realizar 'git pull', parece que su caso de uso no es interactivo. Esto es algo que podría combinarse mejor con gitolite (github.com/sitaramc/gitolite/).
Resumen
==============
El uso de algo como gitolite abstraerá gran parte de la configuración para las configuraciones de tipo SSH, y definitivamente se recomienda si cree que podría tener repositorios adicionales o necesita especificar diferentes niveles de acceso. Su registro y auditoría también son muy útiles.
Si solo desea poder extraer a través de http, la página de manual de git-http-backend debe contener suficiente información para configurar apache para hacer lo necesario.
Siempre puede combinar http(s) anónimos para clonar/extraer, con el acceso ssh protegido por frase de contraseña requerido para el acceso completo, en cuyo caso no es necesario configurar gitolite, simplemente agregará la clave pública ssh al archivo ~/. archivo ssh/authorized_keys.
Vea la respuesta a esta pregunta. Debe usar el acceso SSH en lugar de HTTPS/GIT y autenticarse a través de su clave pública SSH. Esto también debería funcionar localmente.