Gitolite: ¿agregar usuario no funciona y DENEGIDO por fallthru cuando clona como root?

Logré iniciar un repository de git vacío en mi NAS e intenté agregar un nuevo usuario generando una nueva key pública "foo.pub" y copiándola + pegándola en el keyboard / y comprometiéndolo y empujándolo en el NAS .

Primero, los files:

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

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

Agarró una copy 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 file gitolite.conf:

 repo gitolite-admin RW+ = git repo testing RW+ = @all repo newrepo RW+ = foo RW+ = bar 

Cuando empujé mi copy 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 bash presionar al nuevo repository

Cuando bash ejecutar:

 git clone foo:newrepo 

Yo obtengo:

 Cloning into 'newrepo'... foo@iptonas's password: fatal: 'newrepo' does not appear to be a git repository fatal: The remote end hung up unexpectedly 

Cuando bash ejecutar:

 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 En "Agregar repositorys y usuarios"

Esas instrucciones mencionan la clonación con un usuario que tiene una key id_rsa.pub utilizada al instalar Gitolite.

Por lo tanto, su count debe tener en sus ~/.ssh id_rsa e id_rsa.pub utilizadas por gitolite cuando declare al usuario ' git ' (que es el único que puede clonar gitolite-admin repo).

Ahora, para agregar un usuario, no solo tiene que declarar a dicho usuario en el file gitolite.conf (lo cual hizo), gitolite.conf que también debe agregar su key pública al gitolite-admin local de gitolite-admin repo ' keys '.

  • Le pido a Steve Franko que genere un nuevo par de keys público / privado usando " ssh-keygen -t dsa "
  • Le pido a Steve Franko que me envíe la key PÚBLICA que acaba de generar
  • sfranko.pub el nombre de la key pública de id_dsa.pub a sfranko.pub
  • Copio la key sfranko.pub en el gitolite-admin/keydir

Si haces ambas operaciones antes de gitolite-admin , entonces Gitolite declarará ese nuevo usuario, y tu git clone foo:newrepo funcionará.

Tenga en count que si realizó la installation de Gitolite con la count de git como recomendé anteriormente, debe tenerla en su file de configuration:

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

Y vaya a git clone git:gitolite-admin .

La única vez que debe ver / usar la root es al comienzo de la installation en el lado del server, para declarar / agregar la count de git .
Después de eso, realmente te recomiendo que no uses / veas root en ningún lugar de tu process.


En realidad, sí ~/.ssh dos juegos de keys, así que mi carpeta ~/.ssh actualmente tiene: id_rsa , id_rsa.pub , id_foo , id_foo.pub

Su carpeta ~/.ssh debe contener:

git , git.pub , id_foo , id_foo.pub

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

De nuevo: en el lado del server, debe hacer la installation de gitolite como un usuario como 'git', con un argumento a /tmp/git.pub (no /tmp/id_rsa.pub )


Recapitulemos porque hay mucha confusión aquí. Gitolite se basa en ssh .
Eso significa que necesita una count (aquí 'git') del lado del server (que será su server Gitolite), en la que un file ~git/.ssh/authorized_keys registrará todas las keys públicas de administrador / usuarios de Gitolite.

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

Su file ~foo/.ssh/config 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 count que el usuario para cualquier comunicación ssh siempre es git ! Siempre contacta al server Gitolite a través de una dirección ssh://git@iptonas:123/arepo como ssh://git@iptonas:123/arepo .
Excepto que, dado que tiene varias keys SSH para elegir, puede escribir en su lugar:

  • git clone gitadmin:gitolite-admin , o
  • git clone foo:newRepo

El primer command te permitirá clonar el gitolite-admin (porque lo haces usando las keys ssh públicas y privadas, así que tienes los derechos para hacerlo).
Puede usar ese clon local para colocar foo.pub en el directory de keys y declarar un newRepo en el file de config .
Luego, rechazas ese repository (y Gitolite hace su magia, creando un nuevo repository, agregando el contenido de foo.pub a ~git/.ssh/authorized_keys para ti, con un script de command forzado para interceptar cualquier command ssh emitido por foo ).

(Prefiero nombrar el atajo de ssh ' gitadmin ' en lugar de git, incluso si las keys públicas / privadas se llaman ' git.xxx ', porque ' gitadmin ' expresa mejor la intención de los commands ssh que harás con él: administrarás git derechos de acceso)

El segundo command te permite clonar tu nuevo newRepo y trabajar en él.

Tenga en count que:

  • ssh gitadmin , o
  • ssh foo

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