Pregunta sobre gitolite, git, clone – Gitolite: agregar un usuario que no funciona, y ¿NEGADO por fallthru cuando se clona como root?

5

Me las arreglé para iniciar un repositorio git vacío en mi NAS, e intenté agregar un nuevo usuario generando una nueva clave pública "foo.pub" y copiando + pegando en el directorio de direcciones / confirmando eso y presionándolo en el NAS .

Primero, los archivos:

Aquí está mi archivo ~ / .ssh / config:

Host root
    HostName iptonas
    User root
    Port 123        

Host foo
    HostName iptonas
    User foo
    Port 123
    identityfile ~/.ssh/foo

Agarré una copia de gitolite-admin de NAS:

git clone ssh://root/gitolite-admin

Yo obtengo:

Cloning into 'gitolite-admin'...
remote: Counting objects: 12, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 12 (delta 1), reused 0 (delta 0)
Receiving objects: 100% (12/12), done.
Resolving deltas: 100% (1/1), done.

Aquí está mi archivo gitolite.conf:

repo gitolite-admin
    RW+     =   git

repo testing
    RW+     =   @all

repo newrepo
    RW+     =   foo
    RW+     =   bar

Cuando empujé mi copia de gitolite-admin usando:

git push root:gitolite-admin

Yo obtengo:

Counting objects: 10, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (6/6), 1.02 KiB, done.
Total 6 (delta 0), reused 0 (delta 0)
remote: Initialized empty Git repository in /root/repositories/newrepo.git/
To root:gitolite-admin
   897113c..e7e2daf  master -> master

Ahora, cuando intento empujar al nuevo repositorio.

Cuando intento correr:

git clone foo:newrepo

Yo obtengo:

Cloning into 'newrepo'...
[email protected]'s password: 
fatal: 'newrepo' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Cuando intento correr:

git clone root:newrepo

Yo obtengo:

Cloning into 'newrepo'...
FATAL: R any newrepo git DENIED by fallthru
(or you mis-spelled the reponame)
fatal: The remote end hung up unexpectedly

No estoy seguro de lo que estoy haciendo mal?

Estoy siguiendo estas instrucciones:http://www.nineproductions.com/linux/53-gitolite-hosting.html Debajo de "Agregar repositorios y usuarios"

Tu respuesta

1   la respuesta
11

Esas instrucciones mencionan la clonación con un usuario que tiene unid_rsa.pub Llave utilizada al instalar Gitolite.

Por lo tanto, su cuenta debe tener en su~/.ssh laid_rsa yid_rsa.pub Claves utilizadas por gitolite al declarar el 'git'usuario (que es el único capaz de clonargitolite-admin repo).

Ahora, para agregar un usuario, no solo tiene que declarar dicho usuario en elgitolite.conf (lo que hiciste), también debes agregar su clave pública al localgitolite-admin repokeys'directorio.

Le pido a Steve Franko que genere un nuevo par de claves pública / privada usando "ssh-keygen -t dsa”Le pido a Steve Franko que me envíe la clave PÚBLICA que acaba de generarRenombro la clave pública deid_dsa.pub asfranko.pubYo copio elsfranko.pub clave en elgitolite-admin/keydir directorio

Si haces ambas operaciones antes de retrocedergitolite-admin, entonces Gitolite declarará ese nuevo usuario, y tugit clone foo:newrepo trabajará.

Tenga en cuenta que si hizo la instalación de Gitolite con elgit Como lo recomendé anteriormente, debería tener en su archivo de configuración:

Host git
    HostName iptonas
    User git
    Port 123
    Identityfile ~/.ssh/git

Y ve agit clone git:gitolite-admin.

La única vez que debería ver / usarroot se encuentra al comienzo de la instalación en el lado del servidor, para declarar / agregar elgit cuenta.
Después de eso, realmente te recomiendo que no uses / veas.root En cualquier parte de tu proceso.

En realidad generé dos conjuntos de claves, por lo que mi~/.ssh carpeta actualmente tiene:id_rsa, id_rsa.pub, id_foo, id_foo.pub

Tu~/.ssh carpeta debe contener:

git, git.pub, id_foo, id_foo.pub

Gitolite basa su mecanismo de autorización en una autenticación realizada después del nombre de la clave pública.

Una vez más: en el lado del servidor, debe hacer la instalación de gitolite como un usuario como 'git', con un argumento como/tmp/git.pub (no/tmp/id_rsa.pub)

Vamos a recapitular porque hay mucha confusión aquí.Gitolita se basa en ssh.
Eso significa que necesita una cuenta (aquí 'git') en el lado del servidor (que será su servidor Gitolite), en la que~git/.ssh/authorized_keys El archivo registrará todas las claves públicas de Gitolite admin / users.

En el lado del cliente (su usuario foo), debe tener (al menos para su primer usuario) las claves públicas y privadas de git y las de foo.

Tu~foo/.ssh/config archivo contendrá:

Host gitadmin
    HostName iptonas
    User git
    Port 123        
    identityfile ~/.ssh/git

Host foo
    HostName iptonas
    User git
    Port 123
    identityfile ~/.ssh/foo

Tenga en cuenta que el usuario paracualquier comunicación ssh es siempre git! Siempre se contacta con el servidor Gitolite a través de una dirección ssh comossh://[email protected]:123/arepo.
Excepto, ya que tiene varias claves SSH para elegir, puede escribir en su lugar:

git clone gitadmin:gitolite-adminogit clone foo:newRepo

El primer comando te permitirá clonar elgitolite-admin repo (porque haces eso usando las claves ssh públicas y privadas de git, por lo que tienes los derechos para hacerlo).
Puedes usar ese clon local para ponerfoo.pub en elkeys directorio, y declarar unnewRepo en elconfig expediente.
Luego rechazas ese repositorio (y Gitolite hace su magia, creando un nuevo repositorio, agregando el contenido defoo.pub a~git/.ssh/authorized_keys para usted, con un script de comando forzado para interceptar cualquier comando ssh emitido porfoo).

(Prefiero nombrar ese acceso directo ssh 'gitadmin'en lugar de git, incluso si las claves públicas / privadas tienen nombre'git.xxx', porque 'gitadmin'mejor transmite elintención de los comandos ssh que hará con él: administrará los derechos de acceso a git)

El segundo comando te permite clonar tunewRepo y trabajar en ello.

Tenga en cuenta que:

ssh gitadminossh foo

mostrará la versión gitolite y los derechos asociados con las teclas ssh utilizadas por cada acceso directo ssh 'gitadmin'y'foo', como se define en el~foo/.ssh/config expediente.

@Jay: respuesta editada VonC
El usuario "git" se agregó a gitolite.conf y se asignó bajo el repo "newrepo" según las instrucciones para gitolite. Jay
En realidad, pude hacer todo eso para el usuario "git" bien. Pero estoy tratando de 1) configurar el usuario "foo" en mi computadora (ya que el usuario que quiero en mi computadora no es "root" ni "git" sino "foo"), y 2) configurar una nueva repo "newrepo". Agregué foo.pub a gitolite-admin / keydir, y edité gitolite-admin / gitolite.conf por lo que hay "repo newrepo" con "RW + = foo". Luego ssh como root, escriba "su - foo", "vi .profile" y añada esas líneas en el paso 4 de "Configurar el perfil y el directorio de inicio del usuario de Git Hosting", "source .profile", Jay
@Jay> "Me pidieron el pw de git": no debes pedirmegitla contraseña de. Si el servidor (~git/.ssh/authorized_keys) contiene la clave pública de git en una línea precedida porcommand=...), y si el cliente (desde el cual está clonando o presionando) contiene una~/.ssh/config archivo con la derechaIdentityfile ~/.ssh/git directiva (es decir, tiene claves privadas y públicas para lagit cuenta, apropiadamente nombrada 'git'y'git.pub'), no se le pedirá una contraseña. VonC

Preguntas relacionadas