Uso de claves SSH
Si se desea usar conexiones a git autenticadas pero sin almacenar usuario y contraseña en local y por supuesto evitando tener que poner cada vez que operamos la contraseña, estamos necesitando conexiones con autenticación por clave pública.
Lo normal es que ya tengamos o nos generemos un par de claves y las importemos en gitlab para que nos reconozca por este método.
NOTA: si la clave privada fué generada con un password, cada operación que la requiera nos va a pedir ese password. Esto son buenas noticias en materia de seguridad.
Uso implícito de las claves SSH
Cada invocación al comando git, siempre que usemos urls "git....", intentara usar la pareja de claves "default" de SSH. Si nos conectamos desde diferentes lugares podemos crear diferentes pares claves en cada PC o duplicar la pareja en todos esos equipos.
Uso explicito de una clave SSH
Si necesitamos usar una clave diferente de la default podemos usar la capacidad que nos da el fichero $HOME/.ssh/config o indicar en cada ocasión la clave SSH para git con la siguiente fórmula (ejemplo para "pull)
GIT_SSH_COMMAND="ssh -i $HOME.ssh/id_rsa__específica" git pull
Adición de nueva clave SSH
Accedemos a nuestro perfil
Navegamos hasta que nos permite "Add new key"
Pegamos la clave pública en la caja de texto
Cada clave asimétrica RSA / DSA que usamos en SSH tiene un fichero con la parte privada y otro con la parte pública. Pegamos aquí el contenido íntegro de la clave pública. De esta manera, gitlab puede reconocernos porque soloi nosotros vamos a presentar una firma realizada con la parte privada (a buen recaudo).
Problemas ocasionados por múltiples claves SSH
Uso del fichero .ssh/config
Poner en el fichero $HOME/.ssh/config un bloque como el siguiente para que a ese servidor siempre vaya con la clave deseada. Así puedes volver a "git pull" sin indicar la variable GIT_SSH_COMMAND
Host gitlab.com
User jhidalgo
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_favoritagitlab
Clave explítica en variable de entorno
Indicamos la ruta hacia clave en el propio comando
GIT_SSH_COMMAND="ssh -i $HOME/.ssh/id_rsa_favoritagitlab" git pull
Esto vale para todos los comandos de git.
Depurando el problema
Además usando el GIT_SSH_COMMAND podemos poner "-vv" para depurar lo que esté pasando con las credenciales.
GIT_SSH_COMMAND="ssh -vv -i $HOME/.ssh/id_rsa_favoritagitlab" git pull
Si se observa la salida, vemos la ruta de las claves que ofrece para autenticarse en el servidor.