Mon problème est que je ne peux pas pousser ou récupérer depuis GitLab. Cependant, je peux cloner (via HTTP ou via SSH). J'obtiens cette erreur lorsque j'essaye de pousser:
Autorisation refusée (publickey) fatale: impossible de lire à partir du référentiel distant
De tous les fils que j'ai regardés, voici ce que j'ai fait:
- Configurer une clé SSH sur mon ordinateur et ajouter la clé publique à GitLab
- Terminé la configuration - global pour le nom d'utilisateur et l'email
- Cloné via SSH et via HTTP pour vérifier si cela résoudrait le problème
- Terminé la commande ssh -T [email protected]
Si vous avez des idées sur la façon de résoudre mon problème, nous serions très reconnaissants.
ssh -vvvv [email protected]
pour voir s'il récupère la clé SSHsudo git clone [email protected]:project/somethiing.git
, sinon ssh cherchera à la/root/.ssh
place de la clé que vous avez téléchargée~/.ssh/id_rsa
Réponses:
J'ai trouvé ça après avoir beaucoup cherché. Cela fonctionnera parfaitement bien pour moi.
ssh-keygen
.ssh
dossier.id_rsa.pub
. Ouvrez-le sur le bloc-notes. Copiez tout le texte de celui-ci.Maintenant, essayez et cela fonctionnera à coup sûr.
la source
type %userprofile%\.ssh\id_rsa.pub | clip
ssh-add filename
(avec-chemin si ce n'est pas dans le répertoire rsa) après avoir suivi les étapes ci-dessusÉtape 1: Ajout d'un fichier de configuration dans le
~/.ssh/config
fichier qui ressemble àÉtape 2: Clonez simplement le référentiel git SANS sudo.
Documentation: https://gitlab.com/help/ssh/README#working-with-non-default-ssh-key-pair-paths
la source
id_rsa_gitlab
dans l'exemple de Fedo, vous devrez fournir un fichier de configuration. Bel article de Gitlab à ce sujet: gitlab.com/help/ssh/…Hostname
pourHost
que cela fonctionneJe pense que la solution simple est d'ajouter une clé privée à l'agent d'authentification (si votre clé ne l'est pas
~/.ssh/id_rsa
),En gros, vous laissez le
ssh-agent
occuper.De plus, vous pouvez l' ajouter de manière permanente .
la source
.pub
extension.Dans mon cas, cela ne fonctionnait pas dans le WSL (sous-système Windows pour Linux).
Quand je lance le WSL, je dois
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
Maintenant, la connexion fonctionne.
Nous pouvons tester cela avec
ssh -T [email protected]
Remarques:
la source
assurez-vous que vous n'êtes pas en cours d'exécution
sudo git clone [email protected]:project/somethiing.git
, sinon ssh cherchera à la/root/.ssh
place de la clé que vous avez téléchargée~/.ssh/id_rsa
la source
Il existe une solution très simple à cela: au lieu de travailler avec ssh, passez à https. pour ce faire: dans votre dossier de projet, vous avez un dossier .git - vous avez un fichier de configuration - ouvrez-le dans un éditeur de texte et changez la ligne
à
la source
si vous êtes sous Linux ou macox, essayez simplement ceci dans le terminal:
s'il ne renvoie rien, essayez ceci:
il doit créer une identité dans ~ / .ssh / id_rsa
après une nouvelle tentative:
il doit renvoyer votre identité, donc après une nouvelle tentative de clonage, cela doit fonctionner
NB: n'oubliez pas d'ajouter votre clé ssh dans votre profil gitlab
Merci
la source
Dans mon cas, ce n'était pas un problème gitlab, mais un problème de configuration sshd. Le serveur ssh n'autorisait pas la connexion à l'exception d'une liste d'utilisateurs. L'utilisateur git, celui qui se connecte à distance à gitlab, ne figurait pas dans cette liste. Alors, vérifiez ceci avant toute autre chose.
Vous pouvez vérifier la configuration de votre serveur ssh dans
/etc/ssh/sshd_config
. Si vous avez une ligne avec l'optionAllowUsers
, ajoutez-y git:la source
J'ai gitlab en cours d'exécution avec docker, c'est ce que j'ai fait pour résoudre mon problème.
J'ai trouvé que dans docker / var / log / gitlab / sshd / current, il y avait plusieurs occurrences d'un message:
Après quoi, j'ai changé la propriété de ce fichier de 99: users à git: users avec:
la source
Étapes à suivre, j'ai eu la même erreur mais je l'ai corrigée. Gitlab veut ssh-rsa donc voici le code pour exécuter ssh pour rsa
ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
[email protected] est l'adresse e-mail de votre compte gitlab
Il vous demandera d'entrer, appuyez simplement sur Entrée après que le code ci-dessous soit invité,
Entrez le fichier dans lequel enregistrer la clé (/home/yourDesktopName/.ssh/id_rsa):
Il vous invitera à nouveau à entrer, appuyez simplement sur Entrée après que le code ci-dessous soit invité,
Entrez la phrase de passe (vide pour aucune phrase de passe):
Il vous demandera à nouveau le dernier que vous avez entré, il vous suffit d'appuyer sur Entrée après l'invite du code ci-dessous,
Saisissez à nouveau la même phrase secrète:
Vous montrerez votre ssh-rsa generate.
Connectez-vous à votre compte Gitlab et allez dans la barre de navigation de droite, vous obtiendrez le réglage et dans la barre latérale gauche, vous obtiendrez la clé ssh. Entrez-y.
Regardez au-dessus de l'invite vous demandant d'entrer, vous obtiendrez le chemin de ssh-rsa.
Accédez à votre dossier SSH et récupérez le id_rsa.pub
Ouvrez-le et récupérez la clé et copiez la pâte sur le Gitlab et vous avez presque terminé.
Vérifier par:
ssh -T [email protected]
Tu auras:
Welcome to GitLab, @joy4!
Terminé.
la source
Auparavant, c'était très difficile pour moi, mais quand j'ai essayé, il est devenu si facile d'ajouter une clé ssh sous Mac et Linux. Il y a quelques étapes et commandes pour le faire comme suit:
Exécutez la commande
ssh-keygen
dans ce terminal et entrez-la jusqu'à ce que l'image aléatoire de la clé y apparaisse.Entrez ensuite une autre commande dans ce terminal:
Il générera votre clé ssh. La clé commencera par
ssh-rsa
et se terminera par.local
.ssh key
section et collez-la là. Cliquez sur leAdd
bouton cela fonctionnera.la source
J'ai eu le même problème, je l'ai résolu en ajoutant une nouvelle clé ssh:
ssh-keygen -t ed25519 -C "[email protected]"
xclip -sel clip < ~/.ssh/id_ed25519.pub
dans mon cas sous Linux)settings=>ssh
clés et passez la nouvelle cléla source
Entrez le chemin que vous souhaitez enregistrer (Ex: my-pc / Desktop / .ssh / ed25519)
Ajoutez la clé publique à votre gitlab ( Comment ajouter une clé ssh à gitlab )
la source
Deux choses principalement
Vous devez avoir les clés id_rsa.pub et id_rsa (privées) dans votre dossier .ssh (qui devrait être dans votre dossier personnel, créez-le si ce n'est pas là, mettez vos clés). Cela ne fonctionnerait pas si vous avez nommé vos fichiers clés différemment
Changez l'autorisation de l'id_rsa en chmod 400 ~ / .ssh / id_rsa
la source
Un autre problème qui peut provoquer ce comportement est lorsque vous avez une configuration avec 2 emplacements% HOME% possibles.
J'utilise un PC sur lequel certains de mes documents sont stockés localement, et certains d'entre eux sont stockés sur un lecteur réseau. Certaines applications pensent que
C:\Users\<MyUserName>\
c'est la mienne%home%
, d'autres pensent queU:\
c'est la maison.Il s'avère que
ssh-keygen
j'ai mis ma clé privée sousC:\users\<MyUserName>\
, et quessh -T
etssh -v
aussi regarder là - bas.Donc, tout semble bien fonctionner, sauf cela
git clone
,git push
et d'autres recherchent une cléU:\
. Ce qui échoue, donc j'obtiens l'erreur susmentionnée.Il m'a fallu une heure pour le savoir, mais au final, la solution était simple: j'ai tout copié de
C:\Users\<MyUserName>\.ssh
àU:\.ssh
la source
J'ai résolu comme ça ...
Généré une clé pour Windows à l'aide de cette commande:
mais le problème était qu'après l'exécution de cette commande, une ligne apparaissait: "Entrez le fichier dans lequel enregistrer la clé (/c/Users/xxx/.ssh/id_rsa):" Ici, je ne donnais que le nom de fichier à cause duquel ma clé était enregistrée dans mon pwd et non à l'emplacement indiqué. Quand j'ai fait "git clone", il supposait que la clé se trouvait à l'emplacement "/c/Users/xxx/.ssh/id_rsa" mais elle n'a pas été trouvée, d'où une erreur.
Au moment de la génération de la clé, 2 fichiers ont été générés, à savoir "file1" et "file1.pub". J'ai renommé ces deux fichiers comme
et
et placé à la fois dans l'emplacement
"/c/Users/xxx/.ssh/"
la source
Accédez au terminal et régénérez à nouveau la clé ssh. Type
ssh-keygen
. Il vous demandera où vous souhaitez l'enregistrer, tapez le chemin.Copiez ensuite la clé publique sur la plateforme gitlabs. Cela commence généralement par ssh-rsa.
la source
Le problème pour moi était que je suis passé
UsePAM
deyes
àno
dans le fichier de configuration SSH sous/etc/ssh/sshd_config
. AvecUsePAM yes
tout fonctionne parfaitement.la source
J'ai trouvé la solution dans l' aide de gitlab .
J'espère que cela pourra aider certains d'entre vous!
la source
Comment ajouter une clé SSH au compte gitlab dans ubuntu?
La clé SSH apparaîtra. Copiez-les et
Accédez à votre compte gitlab.
La clé SSH sera ajoutée!
(NB si vous avez une clé SSH Générer des aperçus et obtenir l'autorisation refusée (clé publique). Vous supprimez votre clé ssh d'aperçus et en générez une nouvelle et ajoutez git user.name et email sur votre terminal)
la source
J'ai résolu le
[email protected]: Permission denied (publickey)
problème en utilisant les instructions suivantescat ~/.ssh/id_rsa.pub
id_rsa.pub
(clé publique) dans votre getlab `Setting -> SSH Keyscat ~/.ssh/id_rsa
id_rsa
(clé privée) dans `Code_repo-> git_auth-> id_rsaREMARQUE: prenez soin de l'utilisateur de la machine si vous utilisez
root
user dans votre DockerFile ou ailleurs, puis utilisez-lesudo su
avant d'exécuter les commandes ci-dessus pour obtenir les clés publiques et privées de l'utilisateur root.la source
Dans notre cas, ce n'était pas un problème côté utilisateur / client, mais côté serveur Gitlab.
Nous exécutons une instance locale de Gitlab CE 12.9 sur CentOS 7.1.
Nous avons découvert que sur le serveur, le fichier .ssh / allowed_keys ne se mettait pas à jour correctement. Les utilisateurs créent leurs clés SSH (en suivant le guide Gitlab) et les ajoutent au serveur Gitlab, mais le serveur ne met pas à jour les authorised_keys , il en résultera toujours des erreurs d'autorisation refusées.
Une solution de contournement consistait à reconstruire le fichier authorized_keys en exécutant:
Cela fonctionnerait pour tous ceux qui ont ajouté leurs clés avant exécuter la tâche de râteau. Pour les utilisateurs suivants qui ajouteraient leurs clés, quelqu'un doit à nouveau exécuter manuellement les tâches de rake.
Une solution plus permanente était de ne pas utiliser le authorized_keys fichier et utiliser à la place une recherche indexée sur la base de données gitlab ce :
Par défaut (enfin la valeur par défaut sur notre installation), le fichier Write to allowed_keys a été vérifié dans la zone d'administration> Paramètres d' optimisation des performances . Nous avons donc décoché cela et utilisé la base de données Gitlab à la place.
Après avoir configuré la recherche indexée et décoché le fichier Write to allowed_keys , l'accès SSH est devenu OK.
la source
Pour toute personne utilisant Windows 10 et rien d'autre ne fonctionnant pour lui / elle:
Dans mon cas, j'ai dû cloner le repo avec https au lieu de ssh et une fenêtre s'est ouverte demandant mes informations d'identification. Après cela, tout fonctionne bien.
la source
Je sais, je réponds très tard et même StackOverflow a confirmé si je voulais vraiment répondre. Je réponds parce que personne n'a vraiment décrit le problème réel et voulait donc partager le même.
Les bases
Tout d'abord, comprenez que c'est la télécommande ici. Remote est GitLab et votre système est le local, donc lorsque nous parlons de la télécommande
origin
, quelle que soit l'URL définie dans votregit remote -v
sortie, c'est votre URL distante.Les protocoles
Fondamentalement, Git clone / push / pull fonctionne principalement sur deux protocoles différents (il y en a d'autres également) -
Lorsque vous clonez un dépôt (ou modifiez l'URL distante) et utilisez l'URL HTTP comme https://gitlab.com/wizpanda/backend-app.git il utilise le premier protocole, à savoir le protocole HTTP.
Alors que si vous clonez le dépôt (ou modifiez l'URL distante) et utilisez l'URL comme
[email protected]:wizpanda/backend-app.git
il utilise le protocole SSH.Protocole HTTP
Dans ce protocole, chaque opération à distance, c'est-à-dire cloner, pousser et tirer, utilise l'authentification simple, c'est-à-dire le nom d'utilisateur et le mot de passe de votre télécommande (GitLab dans ce cas), ce qui signifie que pour chaque opération, vous devez saisir votre nom d'utilisateur et votre mot de passe, ce qui peut être fastidieux. .
Ainsi, lorsque vous appuyez / tirez / clonez, GitLab / GitHub vous authentifie avec votre nom d'utilisateur et votre mot de passe et vous permet de faire l'opération.
Si vous souhaitez essayer ceci, vous pouvez passer à l'URL HTTP en exécutant la commande
git remote set-url origin <http-git-url>
.Pour éviter ce cas, vous pouvez utiliser le protocole SSH.
Protocole SSH
Une simple connexion SSH fonctionne sur des paires de clés publiques-privées. Donc, dans votre cas, GitLab ne peut pas vous authentifier car vous utilisez l'URL SSH pour communiquer. Maintenant, GitLab doit vous connaître d'une manière ou d'une autre. Pour cela, vous devez créer une paire de clés publique-privée et donner la clé publique à GitLab.
Désormais, lorsque vous poussez / tirez / clonez avec GitLab, GIT (SSH en interne) proposera par défaut votre clé privée à GitLab et confirmera votre identité, puis GitLab vous permettra d'effectuer l'opération.
Je ne répéterai donc pas les étapes déjà données par Muhammad, je les répéterai théoriquement.
~/.ssh
nomméeid_rsa.pub
(clé publique) &id_rsa
(clé privée).Conseils
Vous devez toujours créer une clé rsa forte d'au moins 2048 octets. Donc, la commande peut être
ssh-keygen -t rsa -b 2048
.https://gitlab.com/help/ssh/README#generating-a-new-ssh-key-pair
Pensée générale
Les deux approches ont leurs avantages et leurs inconvénients. Après avoir tapé le texte ci-dessus, je suis allé chercher plus à ce sujet parce que je n'ai jamais lu quelque chose à ce sujet.
J'ai trouvé ce document officiel https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols qui en dit plus à ce sujet. Ce que je veux dire ici, c'est qu'en lisant l'erreur et en réfléchissant à l'erreur, vous pouvez faire votre propre théorie ou compréhension, puis correspondre à certains résultats de Google pour résoudre le problème :)
la source
J'ai ajouté mon
~/.ssh/id_rsa.pub
à la liste des clés SSH connues dans mes paramètres GitLab https://gitlab.com/profile/keys . Cela a résolu le problème pour moi. :-)la source
J'utilise ubuntu 18.04, et c'était en fait un problème de permission sur ma machine locale. Le problème a disparu lorsque j'ai défini l'autorisation de lecture / écriture sur mon dossier .git.
la source
Eh bien, j'ai eu ce même problème et après avoir essayé la réponse proposée par @Khan. Cependant, je n'ai pu le faire fonctionner qu'en changeant simplement l'URL d'origine dans le fichier .git / config à l'adresse https: https://gitlab.com/mygitlabusername/mygitproject.git
Comme l'accès via ssh est refusé, j'ai compris que l'utilisation de https ne devrait pas être un problème. Il vous demandera cependant votre nom d'utilisateur et votre mot de passe pour chaque push vers le référentiel at
la source
Veuillez utiliser
git config credential.helper store
si votre site utilise TLS / SSL. J'espère que cela fonctionnela source
Il semble y avoir des différences entre les deux façons d'accéder à un référentiel git, c'est-à-dire en utilisant SSH ou HTTPS. Pour moi, j'ai rencontré l'erreur parce que j'essayais de pousser mon référentiel local en utilisant SSH.
Le problème peut simplement être résolu en cliquant sur le bouton cloner sur la landing page de votre projet et en copiant le lien HTTPS et en le remplaçant par le lien SSH apparaissant au format "git @ gitlab ...".
la source
Modifier l'autorisation :: chmod 400 ~ / .ssh / id_rsa Cela m'a aidé.
la source