- exigences
- Options pour les clés SSH
- examiner les clés SSH existantes
- générer une nouvelle paire de clés SSH
- ED25519 clés SSH
- RSA clés SSH
- étapes communes pour générer une paire de clés SSH
- OpenSSH des versions 6.5 à 7.,8
- ajouter une clé SSH à votre compte GitLab
- authentification à deux facteurs (2FA)
- tester que tout est correctement configuré
- travailler avec des chemins de paires de clés SSH non par défaut
- clés SSH par référentiel
- plusieurs comptes sur une seule instance GitLab
- options pour Microsoft Windows
git est un système de contrôle de version distribué, ce qui signifie que vous pouvez travailler localement.,En outre, vous pouvez également partager ou « pousser” vos modifications à d’autres serveurs.GitLab prend en charge la communication sécurisée entre Git et ses serveurs à l’aide de clés SSH.
le protocole SSH fournit cette sécurité et vous permet de vous authentifier auprès du serveur distant gitlab sans fournir votre nom d’utilisateur ou votre mot de passe à chaque fois.
cette page peut vous aider à configurer les clés SSH sécurisées que vous pouvez utiliser pour aider secureconnections aux référentiels GitLab.
- Si vous avez besoin d’informations sur la création de clés SSH, commencez par nos options pour les clés SSH.,
- Si vous avez des clés SSH dédiées à votre compte GitLab, vous pouvez être intéressé à travailler avec des chemins de paire de clés SSH non par défaut.
- Si vous avez déjà une paire de clés SSH, vous pouvez aller à comment ajouter une clé SSH à votre compte GitLab.
exigences
pour prendre en charge SSH, GitLab nécessite l’installation du client OpenSSH, qui est préinstallé sur GNU / Linux et macOS, ainsi que sur Windows 10.
assurez-vous que votre système inclut SSH version 6.5 ou plus récente, car cela exclut le schéma de signature MD5 maintenant non sécurisé., La commande suivante renvoie la version ofSSH installée sur votre système:
ssh -V
bien que GitLab ne prenne pas en charge L’installation sur Microsoft Windows,vous pouvez configurer des clés SSH pour configurer Windows en tant que client.
Options pour les clés SSH
GitLab prend en charge L’utilisation des clés RSA, DSA, ECDSA et ED25519.
- GitLab a des clés DSA obsolètes dans GitLab 11.0.
- comme indiqué dans la cryptographie pratique avec Go, les problèmes de sécurité liés à la DSA s’appliquent également à L’ECDSA.,
Par conséquent, notre documentation se concentre sur L’utilisation des clés ED25519 et RSA.
Les administrateurs peuvent restreindre les clés qui doivent être autorisées et leurs longueurs minimales.
vérifiez les clés SSH existantes
Si vous avez des clés SSH existantes, vous pourrez peut-être les utiliser pour sécuriser les connexions avec GitLabrepositories., Par défaut, les clés SSH sur les systèmes Linux et macOS sont stockées dans le répertoire personnel de l’utilisateur,dans le sous-répertoire .ssh/
. Le tableau suivant inclut les noms de fichiers par défaut pour chaque algorithme de clé SSH:
pour les recommandations, voir options pour les clés SSH.
générer une nouvelle paire de clés SSH
Si vous souhaitez créer:
- Une clé ED25519, lisez les clés SSH ED25519.
- Une clé RSA, lire les clés RSA SSH.
ed25519 clés SSH
Le Livre practical Cryptography With Gosuggère que les clés ED25519 sont plus sécurisées et performantes que les clés RSA.,
comme OpenSSH 6.5 a introduit les clés SSH ED25519 en 2014, elles devraient être disponibles sur n’importe quel système fonctionnant actuellement.
Vous pouvez créer et configurer un ED25519 clé avec la commande suivante:
ssh-keygen -t ed25519 -C "<comment>"
Le -C
drapeau, avec une cité commentaire comme une adresse de courriel, est une façon optionnelle pour étiqueter vos clés SSH.
Tu auras une réponse de ce type:
Generating public/private ed25519 key pair.Enter file in which to save the key (/home/user/.ssh/id_ed25519):
Pour les conseils, passez à la démarche commune.,
clés RSA SSH
Si vous utilisez des clés RSA pour SSH, le National Institute of Standards and Technology des États-Unis recommande que vous utilisiez une taille de clé d’au moins 2048 bits.By par défaut, la commandessh-keygen
crée une clé RSA 1024 bits.,
Vous pouvez créer et configurer une clé RSA avec la commande suivante, en remplaçant si vous le souhaitez la taille de clé minimale recommandée de 2048
:
ssh-keygen -t rsa -b 2048 -C "[email protected]"
l’indicateur -C
, avec un commentaire cité tel qu’une adresse e-mail, est un moyen facultatif d’étiqueter vos clés SSH.
Tu auras une réponse de ce type:
Generating public/private rsa key pair.Enter file in which to save the key (/home/user/.ssh/id_rsa):
Pour les conseils, passez à la démarche commune.
étapes communes pour générer une paire de clés SSH
que vous créiez une clé ED25519 ou une clé RSA, vous avez commencé avec le ssh-keygen
command.At ce point, vous verrez le message suivant dans la ligne de commande (pour les clés ED25519):
Generating public/private ed25519 key pair.Enter file in which to save the key (/home/user/.ssh/id_ed25519):
Si vous n’avez pas déjà de paire de clés SSH et que vous ne générez pas de clé de déploiement,acceptez le fichier et le répertoire suggérés. Votre client SSH utilise la paire de clés SSH résultante sans configuration supplémentaire.,
Vous pouvez également enregistrer la nouvelle paire de clés SSH dans un emplacement différent.Vous pouvez attribuer le répertoire et le nom de fichier de votre choix.Vous pouvez également dédier cette paire de clés SSH à un hôte spécifique.
Après avoir assigné un fichier pour enregistrer votre clé SSH, vous pouvez configurer une phrase secrète pour votre clé SSH:
Enter passphrase (empty for no passphrase):Enter same passphrase again:
En cas de succès, vous verrez la confirmation de l’endroit où la commandessh-keygen
a enregistré votre identification et votre clé privée.,
en cas de besoin, vous pouvez mettre à jour la phrase secrète avec la commande suivante:
ssh-keygen -p -f /path/to/ssh_key
clés RSA et OpenSSH des versions 6.5 à 7.8
avant OpenSSH 7.8, L’empreinte de clé publique par défaut pour les clés RSA était
Si votre version D’OpenSSH se trouve entre la version 6.5 et la version 7.8 (incluse),exécutezssh-keygen
avec l’option-o
pour enregistrer vos clés SSH privées au format plus secureOpenSSH.,
Si vous avez déjà une paire de clés RSA SSH à utiliser avec GitLab, envisagez de mettre à niveau itto pour utiliser le format de cryptage de mot de passe plus sécurisé. Vous pouvez le faire avec la commande suivante:
ssh-keygen -o -f ~/.ssh/id_rsa
Sinon, vous pouvez générer une nouvelle clé RSA avec le plus sécurisé de cryptage format avec la commande suivante:
ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
ssh-keygen
page de man, ED25519 déjà crypte clés pour le plus secureOpenSSH format.,ajout d’une clé SSH à votre compte GitLab
Vous pouvez maintenant copier la clé SSH que vous avez créée sur votre compte GitLab. Pour ce faire, procédez comme suit:
-
Copiez votre clé SSH publique dans un emplacement qui enregistre les informations au format texte.,Les options suivantes enregistre les informations pour ED25519 clés de la clipboardfor le célèbre système d’exploitation:
macOS:
pbcopy < ~/.ssh/id_ed25519.pub
Linux (nécessite la balise
xclip
package):xclip -sel clip < ~/.ssh/id_ed25519.pub
Git Bash sous Windows:
cat ~/.ssh/id_ed25519.pub | clip
Si vous utilisez une clé RSA, substitut en conséquence.
- accédez à
ou à l’URL de votre instance GitLab locale et connectez-vous.,
- Sélectionnez votre avatar dans le coin supérieur droit, puis cliquez sur Paramètres
- Cliquez sur les Clés SSH.
- collez la clé publique que vous avez copiée dans la zone de texte clé.
- assurez-vous que votre clé inclut un nom descriptif dans la zone de texte Titre, tel que Work Laptop ouhome Workstation.
- incluez une date d’expiration (facultative) pour la clé sous la section « expire à”. (Introduit dans GitLab 12.9.)
- Cliquez sur le bouton Ajouter une clé.
Les clés SSH qui ont « expiré” à l’aide de cette procédure sont valides dans les workflows GitLab.,Comme la date d’expiration configurée par GitLab n’est pas incluse dans la clé SSH elle-même,vous pouvez toujours exporter des clés SSH publiques si nécessaire.
ssh-ed25519
(ou ssh-rsa
) et en terminant par votre adresse e-mail.l’Authentification à Deux facteurs (2FA)
Vous pouvez configurer l’authentification à deux facteurs (2FA) forGit sur SSH.,
tester que tout est correctement configuré
pour tester si votre clé SSH a été ajoutée correctement, exécutez la commande suivante dans votre terminal (remplacezgitlab.com
par le domaine de votre instance GitLab):
ssh -T [email protected]
la première fois que vous vous connectez à Gitlab via SSH, vous devez vérifier l’authenticité de L’hôte Gitlab auquel vous vous connectez.Par exemple, lors de la connexion à GitLab.com, répondez yes
pour ajouter GitLab.,avec la liste des hôtes de confiance:
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.
Une fois ajouté à la liste des hôtes connus, vous devez valider à nouveau l’authenticité de L’hôte GitLab. Exécutez la commande ci-dessus, et vous devriez recevoir un Welcome to GitLab, @username
! message.,
Si le message de bienvenue n’apparaît pas, vous pouvez résoudre le problème en exécutantssh
en mode verbeux avec la commande suivante:
ssh -Tvvv [email protected]
travaillant avec des chemins de paire de clés SSH non par défaut
Si vous-Chemin de fichier par défaut pour votre paire de clés gitlab SSH,configurez votre client SSH pour pointer vers votre clé SSH privée gitlab.
Pour effectuer ces changements, exécutez les commandes suivantes:
eval $(ssh-agent -s)ssh-add <path to private SSH key>
Maintenant, enregistrer ces paramètres dans la ~/.ssh/config
fichier., Deux exemples de clés SSH dédiées à GitLab sont présentés ici:
# GitLab.comHost gitlab.com Preferredauthentications publickey IdentityFile ~/.ssh/gitlab_com_rsa# Private GitLab instanceHost gitlab.company.com Preferredauthentications publickey IdentityFile ~/.ssh/example_com_rsa
Les clés SSH publiques doivent être uniques à GitLab, car elles se lient à votre compte.Votre clé SSH est le seul identifiant que vous avez lorsque vous poussez du code via SSH,c’est pourquoi il doit être mappé de manière unique à un seul utilisateur.,
clés SSH par référentiel
Si vous souhaitez utiliser différentes clés en fonction du référentiel sur lequel vous travaillez, vous pouvez lancer la commande suivante à l’intérieur de votre référentiel:
git config core.sshCommand "ssh -o IdentitiesOnly=yes -i ~/.ssh/private-key-filename-for-this-repository -F /dev/null"
cela n’utilise pas L’Agent SSH et nécessite au moins Git 2.10.
plusieurs comptes sur une seule instance GitLab
la méthode per-repository fonctionne également pour utiliser plusieurs comptes dans une seule instance GitLab.
alternativement, il est possible d’attribuer directement des alias aux hôtes dans~.ssh/config
., SSH et, par extension, Git ne parvient pas à se connecter s’il existe un IdentityFile
défini en dehors d’un bloc Host
dans .ssh/config
. Ceci est dû à la façon dont SSH assemble les entréesIdentityFile
et n’est pas modifié par la définition deIdentitiesOnly
enyes
. IdentityFile
les entrées doivent pointer vers la clé privée d’une paire de clés SSH.
Host
alias sont définis comme user_1.gitlab.com
etuser_2.gitlab.com
pour plus d’efficacité et de transparence., Les configurations avancées sont plus difficiles à maintenir; l’utilisation de ce type d’alias facilite la compréhension lors de l’utilisation d’autres outils tels que les sous-commandes git remote
. SSHwould comprendrait n’importe quelle chaîne comme un alias Host
ainsi Tanuki1
Et Tanuki2
,bien que donnant très peu de contexte quant à leur point, fonctionnerait également.,le Clonage de la balise gitlab
référentiel normalement ressemble à ceci:
git clone [email protected]:gitlab-org/gitlab.git
Pour le clone de user_1
, remplacez gitlab.com
avec le SSH alias user_1.gitlab.com
:
git clone git@<user_1.gitlab.com>:gitlab-org/gitlab.git
Fixer un déjà cloné référentiel à l’aide de la balise git remote
commande.
L’exemple ci-dessous suppose que le dépôt distant est l’alias origin
.,
git remote set-url origin git@<user_1.gitlab.com>:gitlab-org/gitlab.git
Déployer des touches
Lire la documentation relative à Déployer des Touches.
Applications
Eclipse
Si vous utilisez EGit, vous pouvez ajouter votre clé SSH pour Eclipse.
SSH sur le serveur GitLab
GitLab s’intègre au démon SSH installé sur le système, désignant un utilisateur(généralement nommégit
) à travers lequel toutes les demandes d’accès sont traitées. Les utilisateurs se connectant au serveur GitLab via SSH sont identifiés par leur clé SSH au lieu de leur nom d’utilisateur.,
Les opérations client SSH effectuées sur le serveur GitLab sont exécutées en tant que thisuser. Bien qu’il soit possible de modifier la configuration SSH pour que cet utilisateur,par exemple, fournisse une clé SSH privée pour authentifier ces demandes, cette pratique n’est pas prise en charge et est fortement déconseillée car elle présente des risques de sécurité importants.
le processus de vérification GitLab inclut une vérification de cette condition et vous dirige vers cette section si votre serveur est configuré comme ceci, par exemple:
supprimez la configuration personnalisée dès que vous le pouvez., Ces personnalisationsont explicitement non pris en charge et peuvent cesser de fonctionner à tout moment.
Options pour Microsoft Windows
Si vous utilisez Windows 10, le sous-système Windows Pour Linux (WSL) et sa dernière version WSL 2 prennent en charge l’installation de différentes distributions Linux, notamment les clients Git et SSH.
pour les versions actuelles de Windows, vous pouvez également installer les clients Git et SSH avec git pour Windows.,
Les outils alternatifs incluent:
- Cygwin
- PuttyGen
dépannage
Si sur git clone vous êtes invité à entrer un mot de passe comme [email protected]'s password:
quelque chose ne va pas avec votre configuration SSH.,
- assurez-vous que vous avez généré correctement votre paire de clés SSH et ajouté la clé SSH publique à votre profil GitLab
- essayez d’enregistrer manuellement votre clé SSH privée en utilisant
ssh-agent
comme documentéplus tôt dans ce document - essayez de déboguer la connexion en 79845e1769″>avec votre domaine Gitlab)