• requisitos
  • opciones para claves SSH
  • revisar claves SSH existentes
  • Generar un nuevo par de claves SSH
    • ed25519 claves SSH
    • claves ssh RSA
    • pasos comunes para generar un par de claves SSH
    • openssh de las versiones 6.5 A 7.,8
  • agregar una clave SSH a su cuenta de GitLab
  • autenticación de dos factores (2FA)
  • probar que todo está configurado correctamente
  • Trabajar con rutas de par de claves SSH no predeterminadas
  • claves SSH por repositorio
  • varias cuentas en una sola instancia de GitLab
  • implementar claves
  • Aplicaciones
    • Eclipse
  • SSH en el servidor GitLab
    • opciones para Microsoft Windows
  • Solución de problemas

git es un sistema de control de versiones distribuido, lo que significa que puede trabajar localmente.,Además, también puede compartir o» enviar » sus cambios a otros servidores.GitLab admite la comunicación segura entre Git y sus servidores mediante claves SSH.

el protocolo SSH proporciona esta seguridad y le permite autenticarse en el servidor remoto de GitLab sin proporcionar su nombre de usuario o contraseña cada vez.

esta página puede ayudarlo a configurar claves SSH seguras que puede usar para ayudar a secureconnections a los repositorios de GitLab.

  • Si necesita información sobre cómo crear claves SSH, comience con nuestras opciones para claves SSH.,
  • Si tiene claves SSH dedicadas para su cuenta de GitLab, puede que le interese trabajar con rutas de par de claves SSH no predeterminadas.
  • si ya tienes un par de claves SSH, puedes ir a cómo puedes agregar una clave SSH a tu cuenta de GitLab.

requisitos

para soportar SSH, GitLab requiere la instalación del cliente OpenSSH, que viene preinstalado en GNU / Linux y macOS, así como en Windows 10.

asegúrese de que su sistema incluye SSH Versión 6.5 o posterior, ya que excluye el esquema de firma MD5 ahora inseguro., El siguiente comando devuelve la versión de SSH instalada en su sistema:

ssh -V

aunque GitLab no admite la instalación en Microsoft Windows,puede configurar las claves SSH para configurar Windows como cliente.

opciones para claves SSH

GitLab admite el uso de claves RSA, DSA, ECDSA y ED25519.

  • GitLab tiene claves DSA obsoletas en GitLab 11.0.
  • Como se indica en criptografía práctica con Go, los problemas de seguridad relacionados con DSA también se aplican a ECDSA.,
noteAvailable documentation suggests that ED25519 is more secure. Si utiliza una clave RSA, el Instituto Nacional de Ciencia y Tecnología de los Estados Unidos en la publicación 800-57 Parte 3 (PDF) recomienda un tamaño de clave de al menos 2048 bits.

por lo tanto, nuestra documentación se centra en el uso de las claves ED25519 y RSA.

Los administradores pueden restringir qué claves deben ser permitidas y sus longitudes mínimas.

revise las claves SSH existentes

Si tiene claves SSH existentes, es posible que pueda usarlas para ayudar a proteger las conexiones con GitLabrepositories., De forma predeterminada, las claves SSH en los sistemas Linux y macOS se almacenan en el directorio personal del usuario,en el Subdirectorio .ssh/. La siguiente tabla incluye nombres de archivo predeterminados para cada algoritmo de clave SSH:

para recomendaciones, consulte opciones para claves SSH.

generando un nuevo par de claves SSH

si desea crear:

  • Una clave ED25519, lea las claves SSH ED25519.
  • Una clave RSA, lea las claves RSA SSH.

ED25519 claves SSH

El Libro criptografía práctica con Gosugsters que las claves ED25519 son más seguras y de rendimiento que las claves RSA.,

como OpenSSH 6.5 introdujo las claves SSH ED25519 en 2014, deberían estar disponibles en cualquier sistema operativo actual.

Puede crear y configurar una clave ED25519 con el siguiente comando:

ssh-keygen -t ed25519 -C "<comment>"

la bandera -C, con un comentario citado como una dirección de correo electrónico, es una forma opcional de etiquetar sus claves SSH.

Usted verá una respuesta similar a:

Generating public/private ed25519 key pair.Enter file in which to save the key (/home/user/.ssh/id_ed25519):

Para la orientación, continúe con los pasos comunes.,

RSA SSH keys

Si utiliza claves RSA para SSH, el Instituto Nacional de estándares y Tecnología de los Estados Unidos recomienda que utilice un tamaño de clave de al menos 2048 bits.By por defecto, el comando ssh-keygen crea una clave RSA de 1024 bits.,

Puede crear y configurar una clave RSA con el siguiente comando, sustituyendo si se desea el tamaño mínimo de clave recomendado de 2048:

ssh-keygen -t rsa -b 2048 -C "[email protected]"

el -C flag, con un comentario citado como una dirección de correo electrónico, es una forma opcional de etiquetar sus claves SSH.

Usted verá una respuesta similar a:

Generating public/private rsa key pair.Enter file in which to save the key (/home/user/.ssh/id_rsa):

Para la orientación, continúe con los pasos comunes.

notesi tienes OpenSSH Versión 7.,8 o más abajo, considere los problemas asociados con la codificación.

pasos comunes para generar un par de claves SSH

ya sea que esté creando una clave ED25519 o una clave RSA, ha comenzado con el ssh-keygen command.At en este punto, verá el siguiente mensaje en la línea de comandos (para las claves ED25519):

Generating public/private ed25519 key pair.Enter file in which to save the key (/home/user/.ssh/id_ed25519):

Si aún no tiene un par de claves SSH y no está generando una clave de implementación,acepte el archivo y el directorio sugeridos. Su cliente SSH utiliza el par de claves SSH resultante sin configuración adicional.,

alternativamente, puede guardar el nuevo par de claves SSH en una ubicación diferente.Puede asignar el directorio y el nombre de archivo de su elección.También puede dedicar ese par de claves SSH a un host específico.

después de asignar un archivo para guardar su clave SSH, puede configurar una frase de contraseña para su clave SSH:

Enter passphrase (empty for no passphrase):Enter same passphrase again:

Si tiene éxito, verá la confirmación de dónde el comando ssh-keygen guardó su identificación y Clave Privada.,

cuando sea necesario, puede actualizar la frase de contraseña con el siguiente comando:

ssh-keygen -p -f /path/to/ssh_key

claves RSA y OpenSSH de las versiones 6.5 a 7.8

antes de OpenSSH 7.8, la huella digital de Clave Pública predeterminada para las claves RSA se basaba en MD5 y,por lo tanto, es insegura.

si su versión de OpenSSH se encuentra entre la versión 6.5 a la versión 7.8 (inclusive),ejecute ssh-keygen con la opción -o para guardar sus claves SSH privadas en el formato más seguro de OpenSSH.,

si ya tiene un par de claves ssh RSA para usar con GitLab, considere la posibilidad de actualizar itto use el formato de cifrado de contraseñas más seguro. Usted puede hacerlo con el siguiente comando:

ssh-keygen -o -f ~/.ssh/id_rsa

además, puede generar una nueva clave RSA con la más segura formato de cifrado con el siguiente comando:

ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
notatan señaló en el ssh-keygen el hombre de la página, ED25519 ya la cifra de las teclas para los más secureOpenSSH formato.,

agregar una clave SSH a su cuenta de GitLab

Ahora puede copiar la clave SSH que creó a su cuenta de GitLab. Para hacerlo, siga estos pasos:

  1. copie su clave SSH pública en una ubicación que guarde la información en formato de texto.,Las siguientes opciones se guarda la información para ED25519 claves para la clipboardfor el famoso sistema operativo:

    macOS:

    pbcopy < ~/.ssh/id_ed25519.pub

    Linux (requiere el xclip paquete):

    xclip -sel clip < ~/.ssh/id_ed25519.pub

    Git Bash en Windows:

    cat ~/.ssh/id_ed25519.pub | clip

    Si está utilizando una clave RSA, sustituto en consecuencia.

  2. vaya a o su URL de instancia local de GitLab e inicie sesión.,
  3. seleccione su avatar en la esquina superior derecha y haga clic en Configuración
  4. haga clic en teclas SSH.
  5. pegue la Clave Pública que copió en el cuadro de texto clave.
  6. asegúrese de que su clave incluya un nombre descriptivo en el cuadro de texto Título, como un portátil de trabajo o una estación de trabajo doméstica.
  7. incluya una fecha de caducidad (opcional) para la clave en la sección «caduca en». (Introducido en GitLab 12.9.)
  8. haga clic en el botón Añadir tecla.

Las claves SSH que han» expirado » utilizando este procedimiento son válidas en los flujos de trabajo de GitLab.,Como la fecha de caducidad configurada por GitLab no está incluida en la propia clave SSH,puede exportar claves SSH públicas según sea necesario.

notasi copió manualmente su clave pública SSH, asegúrese de copiar la clave completa que comienza con ssh-ed25519(o ssh-rsa) y termina con su dirección de correo electrónico.

autenticación de dos factores (2FA)

puede configurar la autenticación de dos factores (2FA) olvidada a través de SSH.,

probando que todo está configurado correctamente

para probar si su clave SSH se agregó correctamente, ejecute el siguiente comando en su terminal (reemplace gitlab.com con el dominio de su instancia de GitLab):

la primera vez que se conecte a GitLab a través de SSH, debe verificar laautentidad del host GitLab al que se está conectando.Por ejemplo, cuando se conecta a GitLab.com, responder yes para agregar GitLab.,com a la lista de hosts de confianza:

The authenticity of host 'gitlab.com (35.231.145.151)' can't be established.ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 'gitlab.com' (ECDSA) to the list of known hosts.
noteFor GitLab.com, consulte thessh host keys fingerprints, sección para asegurarse de que se está conectando al servidor correcto. Por ejemplo, puede ver la huella digital de la clave ECDSA que se muestra arriba en la sección vinculada.

Una vez añadido a la lista de hosts conocidos, debe validar laautentidad del host GitLab, una vez más. Ejecute el comando anterior de nuevo, y debería recibir una bienvenida a GitLab, @username! mensaje.,

si el mensaje de bienvenida no aparece, puede solucionar el problema ejecutando sshen modo detallado con el siguiente comando:

ssh -Tvvv [email protected]

trabajando con rutas de par de claves SSH no predeterminadas

-ruta de archivo predeterminada para su par de claves SSH de GitLab,configure su cliente SSH para que apunte a su clave SSH privada de GitLab.

Para hacer estos cambios, ejecute los siguientes comandos:

eval $(ssh-agent -s)ssh-add <path to private SSH key>

Ahora, guardar esta configuración en el ~/.ssh/config archivo., Aquí se muestran dos ejemplos de claves SSH dedicadas a GitLab:

# GitLab.comHost gitlab.com Preferredauthentications publickey IdentityFile ~/.ssh/gitlab_com_rsa# Private GitLab instanceHost gitlab.company.com Preferredauthentications publickey IdentityFile ~/.ssh/example_com_rsa

Las claves SSH públicas deben ser exclusivas de GitLab, ya que se vinculan a su cuenta.Su clave SSH es el único identificador que tiene al enviar código a través de SSH,por eso necesita mapear de forma única a un solo usuario.,

claves SSH por repositorio

si desea usar claves diferentes dependiendo del repositorio en el que esté trabajando, puede emitir el siguiente comando mientras esté dentro de su repositorio:

git config core.sshCommand "ssh -o IdentitiesOnly=yes -i ~/.ssh/private-key-filename-for-this-repository -F /dev/null"

esto no usa el agente SSH y requiere al menos Git 2.10.

varias cuentas en una sola instancia de GitLab

el método por repositorio también funciona para usar varias cuentas dentro de una sola instancia de GitLab.

alternativamente, es posible asignar alias directamente a los hosts en~.ssh/config., SSH y, por extensión, Git no puede iniciar sesión si hay un bloque IdentityFile establecido fuera de un bloque Host En .ssh/config. Esto se debe a cómo SSH ensambla las entradas IdentityFile y no se cambia estableciendo IdentitiesOnly a yes. IdentityFile las entradas deben apuntar a la Clave Privada de un par de claves SSH.

nota: ejemplo Host alias se define como user_1.gitlab.com yuser_2.gitlab.com para la eficiencia y la transparencia., Las configuraciones avanzadas son más difíciles de mantener; el uso de este tipo de alias hace que sea más fácil de entender cuando se utilizan otras herramientas como git remote sub-comandos. Ssh entendería cualquier cadena como un alias Host por lo tanto Tanuki1 y Tanuki2,a pesar de dar muy poco contexto en cuanto a dónde apuntan, también funcionarían.,

la Clonación de la etiqueta gitlab repositorio normalmente se ve como esto:

git clone [email protected]:gitlab-org/gitlab.git

clonarlo para user_1, reemplace gitlab.com con el SSH alias user_1.gitlab.com:

git clone git@<user_1.gitlab.com>:gitlab-org/gitlab.git

Fijar previamente un repositorio clonado utilizando la etiqueta git remote comando.

el siguiente ejemplo asume que el repositorio remoto está alias como origin.,

git remote set-url origin git@<user_1.gitlab.com>:gitlab-org/gitlab.git

Implementar las teclas

Lea la documentación en Implementar las Teclas.

aplicaciones

Eclipse

Si está utilizando EGit, puede agregar su clave SSH a Eclipse.

SSH en el servidor GitLab

GitLab se integra con el demonio SSH instalado en el sistema, designando un usuario(normalmente llamadogit) a través del cual se manejan todas las solicitudes de acceso. Los usuarios que se conectan al servidor GitLab a través de SSH se identifican por su clave SSH en lugar de su nombre de usuario.,

Las operaciones de cliente SSH realizadas en el servidor GitLab se ejecutan como thisuser. Aunque es posible modificar la configuración de SSH para este usuario para,por ejemplo, proporcionar una clave SSH privada para autenticar estas solicitudes, esta práctica no es compatible y se desaconseja ya que presenta riesgos de seguridad significativos.

el proceso de comprobación de GitLab incluye una comprobación de esta condición y lo dirige a esta sección si su servidor está configurado de esta manera, por ejemplo:

elimine la configuración personalizada tan pronto como pueda., Estas personalizaciones no son soportadas explícitamente y pueden dejar de funcionar en cualquier momento.

opciones para Microsoft Windows

Si está ejecutando Windows 10, el subsistema de Windows Para Linux (WSL), y su última versión de WSL 2,admiten la instalación de diferentes distribuciones de Linux, que incluyen los clientes Git y SSH.

para las versiones actuales de Windows, también puede instalar los clientes Git y SSH congit Para Windows.,

Las herramientas alternativas incluyen:

  • Cygwin
  • PuttyGen

solución de problemas

Si en Git clone se le solicita una contraseña como[email protected]'s password: algo está mal con su configuración de SSH.,

  • asegúrese de que generó su par de claves SSH correctamente y agregó la clave SSH pública a su perfil de GitLab
  • intente registrar manualmente su clave SSH privada usando ssh-agent como documentedearlier en este documento
  • intente depurar la conexión ejecutando ssh -Tv [email protected](reemplazando example.com con su dominio GitLab)