- 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.,
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.
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]"
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:
-
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.
- vaya a
o su URL de instancia local de GitLab e inicie sesión.,
- seleccione su avatar en la esquina superior derecha y haga clic en Configuración
- haga clic en teclas SSH.
- pegue la Clave Pública que copió en el cuadro de texto clave.
- 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.
- incluya una fecha de caducidad (opcional) para la clave en la sección «caduca en». (Introducido en GitLab 12.9.)
- 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.
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):
ssh -T [email protected]
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.
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 ssh
en 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.
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]
(reemplazandoexample.com
con su dominio GitLab)