Cree un usuario SSH con privilegios limitados para usar solo el repositorio Git


12

Tengo un repositorio git alojado en mi servidor SunOS, que uso de forma remota a través de ssh

git clone ssh://myUser@mydomain.com/path/to/git

Ahora necesito agregar más usuarios para poder acceder a ese repositorio, pero no estoy seguro de cómo hacerlo.

He agregado un testUser a ssh, pero parece que no puedo limitar esos privilegios de usuario para usar solo git.

testUser es capaz de navegar y navegar por todo el servidor.

¿Cómo puedo crear usuarios que solo puedan acceder a git de forma remota, para clonar / jalar / empujar, etc.?

Gracias

Respuestas:


12

Puede considerar usar gitolite con un solo usuario en lugar de configurar múltiples usuarios de git-shell (y el grupo requerido y los permisos de grupo para que puedan compartir el acceso a los repositorios).

gitolite se ejecuta bajo un solo usuario normal en el servidor y usa claves públicas SSH para diferenciar el acceso a los repositorios de Git (vea " cómo gitolite usa ssh " para algunos de los detalles de cómo gitolite realiza su identificación basada en SSH). gitolite ofrece control de acceso por repositorio, por rama e incluso por ruta.


1
+1 para gitosis ... Fue hecho exactamente para esta configuración.
Jeremy Bouse

12

Básicamente tienes dos opciones.

  1. Como mencionó topdog, cuando cree usuarios en el servidor, configure su shell en git-shell ( entrada de libro aquí ). Esto permitirá que el usuario inicie sesión a través de SSH, pero en lugar de ejecutar un shell normal con todas las funciones (por ejemplo, sh, bash, etc.) ejecutará git-shell, que solo proporciona acceso a la funcionalidad git.

  2. Alternativamente, puede hacer que sus repositorios estén disponibles a través de otro protocolo, como TCP (usando git-deamon ) o HTTP / HTTPS. Sin embargo, solo recomendaría este escenario para el acceso de solo lectura.

Menciona que desea admitir la funcionalidad 'push' para sus usuarios, por lo que realmente debería ir con la opción # 1.


5

necesita cambiar su shell a git-shell, eso solo les dará acceso a las funciones de git solamente.


Gracias topdog. Básicamente, el usuario usará su propio git shell en su Mac. Realmente no quiero que él pueda enviar ssh al servidor. Entonces, si el repositorio de git está en mydomain.com desde testUser computer / Mac, en el terminal podría simplemente solicitar su contraseña para clonar ssh: //myUser@mydomain.com/path/to/git, luego descargue el repositorio. Intenté ahora configurar su caparazón en git-shell. Aparece cuando se llama a clonar pero la contraseña se rechaza.
Bach

debe configurar myUsers shell en git-shell si todo lo que quiere que hagan en el servidor es ejecutar comandos git y no poder shell. para las solicitudes de contraseña, use las teclas. Para obtener una cobertura más detallada de git en un servidor, consulte el libro git gratuito progit.org/book/ch4-0.html
topdog

gracias por la referencia del libro! muy útil. Terminé usando gitolite, aunque todavía tengo problemas con la configuración.
Bach

git-shell : "Este es un shell de inicio de sesión para cuentas SSH para proporcionar acceso Git restringido. Permite la ejecución solo de comandos Git del lado del servidor que implementan la funcionalidad pull / push, además de comandos personalizados presentes en un subdirectorio llamado git-shell-command en el directorio de inicio del usuario ". En Linux, agregue "/ bin / git-shell" a "/ etc / shells" y luego "usermod --shell / bin / git-shell $ USER". Por cierto, el libro de git está ahora en git-scm.com/book/en/ch4-0.html
David Tonhofer

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.