Mi problema es que no puedo empujar o buscar desde GitLab. Sin embargo, puedo clonar (a través de HTTP o SSH). Recibo este error cuando intento presionar:
Permiso denegado (clave pública) fatal: no se pudo leer desde el repositorio remoto
De todos los hilos que he visto, esto es lo que he hecho:
- Configurar una clave SSH en mi computadora y agregar la clave pública a GitLab
- Hecho la configuración --global para nombre de usuario y correo electrónico
- Clonado a través de SSH y HTTP para verificar si resolvería el problema
- Hecho el comando ssh -T [email protected]
Si tiene alguna idea sobre cómo resolver mi problema, sería muy apreciado.
ssh -vvvv [email protected]
para ver si recoge la clave SSHsudo git clone [email protected]:project/somethiing.git
, de lo contrario, ssh buscará en/root/.ssh
lugar de la clave que cargó~/.ssh/id_rsa
Respuestas:
Encontré esto después de buscar mucho. Funcionará perfectamente bien para mí.
ssh-keygen
.ssh
carpeta.id_rsa.pub
. Ábralo en el bloc de notas. Copie todo el texto de él.Ahora inténtalo y funcionará seguro.
fuente
type %userprofile%\.ssh\id_rsa.pub | clip
ssh-add filename
(con-ruta si no está en el directorio rsa) después de seguir los pasos anterioresPaso 1: se agregó un archivo de configuración en el
~/.ssh/config
archivo que se parecePaso 2: solo clona el repositorio de git SIN sudo.
Documentación: https://gitlab.com/help/ssh/README#working-with-non-default-ssh-key-pair-paths
fuente
id_rsa_gitlab
en el ejemplo de Fedo, deberá proporcionar un archivo de configuración. Buen artículo de Gitlab sobre el asunto: gitlab.com/help/ssh/…Hostname
paraHost
que esto funcioneCreo que la solución simple es agregar una clave privada al agente de autenticación (si su clave no es
~/.ssh/id_rsa
),Básicamente dejas que
ssh-agent
se encargue de eso.Además, puede agregarlo permanentemente .
fuente
.pub
extensión.En mi caso, no funcionó en el WSL (Windows Subsystem for Linux).
Cuando comienzo el WSL, debo
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
Ahora la conexión funciona.
Podemos probar esto con
ssh -T [email protected]
notas:
fuente
asegúrese de no estar ejecutando
sudo git clone [email protected]:project/somethiing.git
, de lo contrario, ssh buscará en/root/.ssh
lugar de la clave que cargó~/.ssh/id_rsa
fuente
Hay una solución muy simple para esto: en lugar de trabajar con ssh, muévase a https. para hacer esto: en su carpeta de proyecto tiene una carpeta .git allí, tiene un archivo de configuración, ábralo en un editor de texto y cambie la línea
a
fuente
Si estás en Linux o Macox, prueba esto en la terminal:
si no devuelve nada, intente esto:
debe crear identidad en ~ / .ssh / id_rsa
después de reintentar:
debe devolver su identidad, por lo que después de volver a intentar clonar, debe funcionar
NB: no olvide agregar su clave ssh en su perfil gitlab
Gracias
fuente
En mi caso, no fue un problema de gitlab, sino uno de configuración sshd. El servidor ssh no permitió la conexión, excepto por una lista de usuarios. El usuario git, el que se conecta remotamente a gitlab, no estaba en esa lista. Por lo tanto, verifique esto antes que nada.
Puede verificar la configuración de su servidor ssh en
/etc/ssh/sshd_config
. Si tiene una línea con la opciónAllowUsers
, agregue git:fuente
Tengo gitlab ejecutándose con docker, esto es lo que hice para solucionar mi problema.
Descubrí que dentro de docker / var / log / gitlab / sshd / current había múltiples ocurrencias de un mensaje:
Después de lo cual cambié la propiedad de ese archivo de 99: usuarios a git: usuarios con:
fuente
Pasos a realizar, obtuve el mismo error pero lo solucioné. Gitlab quiere ssh-rsa, así que a continuación se muestra el código para ejecutar ssh para rsa
ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
[email protected] es el correo electrónico de su cuenta de gitlab
Te pedirá que ingreses, así que solo presiona Enter después de que aparezca el siguiente código,
Ingrese el archivo en el que guardará la clave (/home/yourDesktopName/.ssh/id_rsa):
Te pedirá nuevamente que ingreses, así que solo presiona Enter después de que aparezca el siguiente código,
Ingrese la frase de contraseña (vacía para ninguna frase de contraseña):
Se le solicitará nuevamente la última vez que ingrese, así que solo presione Enter después de que se solicite el código siguiente,
Ingrese la misma frase de contraseña nuevamente:
Mostrará su ssh-rsa generar.
Inicie sesión en su cuenta de Gitlab y vaya a la barra de navegación derecha que obtendrá y en la barra lateral izquierda obtendrá la clave ssh. Entra en él.
Mire por encima del mensaje que le pide que ingrese, obtendrá la ruta de ssh-rsa.
Vaya a su carpeta SSH y obtenga el id_rsa.pub
Ábralo y obtenga la clave y copie y pegue en Gitlab y ya casi está listo.
Corregido por:
ssh -T [email protected]
Conseguirás:
Welcome to GitLab, @joy4!
Hecho.
fuente
Anteriormente fue muy difícil para mí, pero cuando lo intenté, fue muy fácil agregar la clave ssh en Mac y Linux. Hay algunos pasos y comandos para hacer esto de la siguiente manera:
Ejecutar comando
ssh-keygen
en ese terminal e introdúzcalo hasta que aparezca la imagen randomart de la clave.Luego ingrese un comando más en esa terminal:
Generará su clave ssh. La clave comenzará con
ssh-rsa
y terminará con.local
.ssh key
sección y péguela allí. Haga clic en elAdd
botón, esto funcionará.fuente
Tuve el mismo problema, lo resolví agregando una nueva clave ssh:
ssh-keygen -t ed25519 -C "[email protected]"
xclip -sel clip < ~/.ssh/id_ed25519.pub
en mi caso en Linux)settings=>ssh
claves y pase la nueva clavefuente
Ingrese la ruta que desea guardar (Ej: my-pc / Desktop / .ssh / ed25519)
Agregue la clave pública a su gitlab ( Cómo agregar clave ssh a gitlab )
fuente
Dos cosas principalmente
Debe tener las claves id_rsa.pub e id_rsa (privadas) en su carpeta .ssh (que debe estar en su carpeta de inicio. Créelo si no está allí, coloque sus claves). No funcionaría si hubiera nombrado sus archivos clave de manera diferente
Cambie el permiso de id_rsa como chmod 400 ~ / .ssh / id_rsa
fuente
Otro problema que puede causar este comportamiento es cuando tiene una configuración con 2 posibles ubicaciones% HOME%.
Estoy usando una PC donde algunos de mis documentos se almacenan localmente, y algunos de ellos se almacenan en una unidad de red. Algunas aplicaciones piensan que
C:\Users\<MyUserName>\
es mi%home%
, otras piensan queU:\
es el hogar.Resulta
ssh-keygen
poner mi clave privada debajoC:\users\<MyUserName>\
, y esossh -T
yssh -v
también mirar allí.Entonces, todo parece funcionar bien, excepto eso
git clone
,git push
y otros buscan una clave enU:\
. Lo que falla, por lo que me sale el error antes mencionado.Me tomó una hora para averiguar, pero al final la solución fue simple: he copiado todo, desde
C:\Users\<MyUserName>\.ssh
aU:\.ssh
fuente
Resolví así ...
Generó una clave para Windows usando este comando:
pero el problema fue que después de ejecutar este comando, apareció una línea: "Ingrese el archivo en el que guardará la clave (/c/Users/xxx/.ssh/id_rsa):" Aquí, estaba dando solo el nombre del archivo debido a que mi clave se guardaba en mi pwd y no en la ubicación dada. Cuando hice "git clone", suponía que la clave estaba en la ubicación "/c/Users/xxx/.ssh/id_rsa" pero no se encontró, por lo tanto, arrojó un error.
En el momento de la generación de la clave, se generaban 2 archivos, por ejemplo, "archivo1" y "archivo1.pub". Cambié el nombre de estos dos archivos como
y
y coloca ambos en la ubicación
"/c/Users/xxx/.ssh/"
fuente
Vaya a la terminal y vuelva a generar la clave ssh. Tipo
ssh-keygen
. Le preguntará dónde desea guardarlo, escriba la ruta.Luego copie la clave pública a la plataforma gitlabs. Suele comenzar con ssh-rsa.
fuente
El problema para mí fue que cambié
UsePAM
deyes
queno
en el fichero de configuración SSH bajo/etc/ssh/sshd_config
. ConUsePAM yes
todo funciona perfectamente.fuente
Encontré la solución en la ayuda de gitlab .
¡Espero que pueda ayudar a algunos de ustedes!
fuente
¿Cómo agregar la clave SSH a la cuenta de gitlab en ubuntu?
Aparecerá la clave SSH. Copia esos y
Ve a tu cuenta de gitlab.
¡Se agregará SSH-Key!
(Nota: si tiene la clave SSH Generate Previews y se le denegó el permiso (clave pública). Elimine su clave ssh de Previews y Genere una nueva y agregue git user.name y correo electrónico en su terminal)
fuente
Resolví el
[email protected]: Permission denied (publickey)
problema usando las siguientes instruccionescat ~/.ssh/id_rsa.pub
id_rsa.pub
(clave pública) en su configuración de getlab `-> SSH Keyscat ~/.ssh/id_rsa
id_rsa
(clave privada) a `Code_repo-> git_auth-> id_rsaNOTA: Cuide al usuario de la máquina si está utilizando el
root
usuario en su DockerFile o en cualquier otro lugar y luego usesudo su
antes de ejecutar los comandos anteriores para obtener las claves públicas y privadas del usuario root.fuente
En nuestro caso, no fue un problema del lado del usuario / cliente, sino del lado del servidor de Gitlab.
Estamos ejecutando una instancia local de Gitlab CE 12.9 en CentOS 7.1.
Descubrimos que en el servidor, el archivo .ssh / Authorized_keys no se actualizaba correctamente. Los usuarios crean sus claves SSH (siguiendo la guía de Gitlab) y las agregan al servidor de Gitlab, pero el servidor no actualiza las claves autorizadas , por lo que siempre dará lugar a errores de permiso denegado.
Una solución alternativa era reconstruir el archivo autorizado_claves ejecutando:
Eso funcionaría para cualquiera que agregara sus claves antes de ejecutar la tarea de rastrillo. Para los siguientes usuarios que agregarían sus claves, alguien debe ejecutar manualmente las tareas de rastrillo nuevamente.
Una solución más permanente era no usar el archivo autorizado_claves y usar en su lugar una búsqueda indexada en la base de datos de Gitlab :
De manera predeterminada (bueno, el valor predeterminado en nuestra instalación), el archivo Escribir en autor_claves se verificó en el Área de administración> Configuración de optimización del rendimiento . Así que desmarcamos eso y usamos la base de datos de Gitlab en su lugar.
Después de configurar la búsqueda indexada y desmarcar el archivo Escribir en autor_claves , el acceso SSH se volvió correcto.
fuente
Para cualquiera que use Windows 10 y nada más que trabaje para él / ella:
En mi caso, tuve que clonar el repositorio con https en lugar de ssh y apareció una ventana emergente pidiendo mis credenciales. Después de eso todo funciona bien.
fuente
Lo sé, estoy respondiendo esto muy tarde e incluso StackOverflow confirmó si realmente quiero responder. Estoy respondiendo porque en realidad nadie describió el problema real, por lo que quería compartirlo.
Los basicos
Primero, comprenda que cuál es el control remoto aquí. El control remoto es GitLab y su sistema es el local, por lo tanto, cuando hablamos del control remoto
origin
, cualquier URL establecida en sugit remote -v
salida es su URL remota.Los protocolos
Básicamente, Git clone / push / pull funciona principalmente en dos protocolos diferentes (también hay otros):
Cuando clona un repositorio (o cambia la URL remota) y usa la URL HTTP como https://gitlab.com/wizpanda/backend-app.git, entonces usa el primer protocolo, es decir, el protocolo HTTP.
Mientras que si clonas el repositorio (o cambias la URL remota) y usas la URL como
[email protected]:wizpanda/backend-app.git
entonces, usa el protocolo SSH.Protocolo HTTP
En este protocolo, cada operación remota, es decir, clonar, empujar y tirar, utiliza la autenticación simple, es decir, el nombre de usuario y la contraseña de su control remoto (GitLab en este caso), lo que significa que para cada operación, debe escribir su nombre de usuario y contraseña, lo que puede ser engorroso. .
Entonces, cuando empuja / jala / clona, GitLab / GitHub lo autentica con su nombre de usuario y contraseña y le permite realizar la operación.
Si desea probar esto, puede cambiar a la URL HTTP ejecutando el comando
git remote set-url origin <http-git-url>
.Para evitar ese caso, puede usar el protocolo SSH.
Protocolo SSH
Una conexión SSH simple funciona en pares de claves público-privadas. Entonces, en su caso, GitLab no puede autenticarlo porque está utilizando una URL SSH para comunicarse. Ahora, GitLab debe conocerte de alguna manera. Para eso, debe crear un par de claves pública-privada y darle la clave pública a GitLab.
Ahora, cuando empuja / jala / clona con GitLab, GIT (SSH internamente) ofrecerá por defecto su clave privada a GitLab y confirmará su identidad y luego GitLab le permitirá realizar la operación.
Así que no repetiré los pasos que ya dio Muhammad, los repetiré teóricamente.
~/.ssh
nombreid_rsa.pub
(clave pública) &id_rsa
(clave privada).Consejos
Siempre debe crear una clave rsa segura con al menos 2048 bytes. Entonces el comando puede ser
ssh-keygen -t rsa -b 2048
.https://gitlab.com/help/ssh/README#generating-a-new-ssh-key-pair
Pensamiento general
Tanto el enfoque tiene sus pros y sus contras. Después de escribir el texto anterior, fui a buscar más sobre esto porque nunca leí algo sobre esto.
Encontré este documento oficial https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols que dice más sobre esto. Mi punto aquí es que, al leer el error y reflexionar sobre el error, puede hacer su propia teoría o comprensión y luego puede coincidir con algunos resultados de Google para solucionar el problema :)
fuente
Agregué mi
~/.ssh/id_rsa.pub
a la lista de claves SSH conocidas en mi configuración de GitLab https://gitlab.com/profile/keys . Eso resolvió el problema para mí. :-)fuente
Uso ubuntu 18.04, y en realidad fue un problema de permiso en mi máquina local. El problema desapareció cuando configuré el permiso de lectura / escritura en mi carpeta .git.
fuente
Bueno, tuve este mismo problema y después de intentar la respuesta @Khan propuso. Sin embargo, solo pude hacerlo funcionar simplemente cambiando la url de origen en el archivo .git / config a la dirección https: https://gitlab.com/mygitlabusername/mygitproject.git
Como el acceso a través de ssh está denegado, descubrí que usar https no debería ser un problema. Sin embargo, le pedirá su nombre de usuario y contraseña para cada envío al repositorio at
fuente
Úselo
git config credential.helper store
si su sitio usa TLS / SSL. Espero que esto funcionefuente
Parece haber diferencias entre las dos formas de acceder a un repositorio git, es decir, usando SSH o HTTPS. Para mí, encontré el error porque estaba tratando de impulsar mi repositorio local usando SSH.
El problema simplemente se puede resolver haciendo clic en el botón de clonar en la página de inicio de su proyecto y copiando el enlace HTTPS y reemplazándolo por el enlace SSH que aparece con el formato "git @ gitlab ...".
fuente
Cambiar permiso :: chmod 400 ~ / .ssh / id_rsa Me ayudó.
fuente