¿Por qué puedo clonar desde una máquina, pero no desde otra?

Tengo mi propia configuration de gitlab en mi propio dominio. Lo he estado usando felizmente desde mi escritorio de Windows, usando gitbash. He estado creando repos a través de la interfaz web de Gitlab y luego he lanzado mi código desde mi máquina local;

git remote add origin [email protected]:my_namespace/my_repo.git 

También puedo clonar, así;

 git clone [email protected]:my_namespace/my_repo.git my_repo 

No hay problemas para hacer cualquiera de estos en mi escritorio.

Si bash hacer lo mismo desde el cuadro de CentOS (el mismo que hospeda mi dominio de gitlab, aunque puede que no siempre sea así), se me solicita la contraseña de gitlab_user. Después de esto, el mismo command de clonación me dice que my_namespace / my_repo.git no parece ser un repository de git. Sé que es porque no tengo problemas para acceder desde mi máquina de Windows.

¿Alguna idea de por qué no la veo como un repository cuando me conecto desde otro lugar, y por qué está pidiendo la contraseña?

La solución

En conclusión, fue porque no tenía mi key pública .ssh añadida a la count de usuario en gitlab. Los pasos para arreglar esto fueron;

  1. ssh en mi cuadro de Linux como el usuario que quiero clonar como. Creé un usuario especialmente para este propósito.
  2. ssh-keygen -t rsa -C "[email protected]" – (La parte -C es un comentario que me ayuda a determinar de quién es la key si alguna vez lo olvido).
  3. Copie el contenido de la key pública (mientras todavía está conectado en el cuadro de Linux como mi nuevo usuario) con cat ~/.ssh/id_rsa.pub
  4. Inicie session en gitlab (como un usuario que tiene permiso para acceder al proyecto que desea clonar) y agregue esta key ssh a la count, pegando la key pública que acaba de copyr en el paso 4.

Ahora puedo clonar usando mi command original;

 git clone [email protected]:my_namespace/my_repo.git my_repo 

Que aprendí

Siempre me conectaré inicialmente a mi server gitlab como usuario gitlab_user . Pero a su llegada, gitlab identificará la count de usuario que afirmo que está haciendo coincidir mi key pública con una almacenada en una de las counts que tiene en su database. Es por eso que no puede adjuntar la misma key .ssh a más de una count gitlab – gitlab no sabría quién era cuando se conectó.

Sin embargo, puede poner más de una key (diferente) en una sola count. Por ejemplo, necesito poder acceder al repository desde el hogar y desde la oficina, pero ser identificado como el mismo usuario de gitlab cada vez. Lo hago creando una key .ssh en mi casa y añadiéndola a mi count de gitlab, y haciendo lo mismo en el trabajo. Dos keys diferentes, identificándome como el mismo usuario de gitlab.

Comtesting si tienes una key ssh en tus centOs ~ / .ssh, pero si no lo haces, no te aconsejo que copies las de tu window% HOME% /. Ssh.

Genere un nuevo par de keys y registre su key pública ssh en la página de configuration de GitLab ssh.
Puedes ver un ejemplo en este script gitlabhq-recipe

 ssh-keygen -q -N '' -t rsa -f ~/.ssh/id_rsa 

Primero me gustaría comenzar con una key sin una frase de contraseña :

 ssh-keygen -t rsa -f "$HOME/.ssh/gitlab" -C "GitLab access (not interactive)" -q -P "" 

Pero en el caso de un nombre no convencional, agrego un file ~ / .ssh / config :

 Host gilab HostName my.gitlab.domain User gitlab_user IdentityFile ~/.ssh/gitlab 

En ese caso, en lugar de clonar [email protected]:my_namespace/my_repo.git , puedo clonar:

 git clone gitlab:my_namespace/my_repo.git