J'utilise Git depuis un moment maintenant, mais les demandes constantes de mot de passe commencent à me faire perdre la raison.
J'utilise OSX et Github, et j'ai configuré Git et mes clés SSH comme indiqué par la page Configurer Git de GitHub . J'ai également ajouté la clé SSH github à mon trousseau Mac OSX, comme indiqué à la page Mots de passe/phrases clés de la clé SSH de GitHub . Ma clé publique est enregistrée auprès de Git.
Néanmoins, chaque fois que j'essaie de tirer, je dois entrer mon nom d'utilisateur et mon mot de passe. Y a-t-il autre chose qu'une clé SSH que je dois configurer pour cela?
Je pense que vous avez peut-être le mauvais URL git repo.
Ouvrez .git/config
et recherchez la section [remote "Origin"]. Assurez-vous que vous utilisez la variable SSH
:
ssh://[email protected]/username/repo.git
Vous pouvez voir l'URL ssh dans la page principale de votre rapport si vous cliquez sur clone or download
et choisissez ssh
Et PAS le https
ou git
un:
https://github.com/username/repo.git
git://github.com/username/repo.git
Vous pouvez maintenant valider avec seulement le SSH Key
au lieu des username
et password
.
[Edit:] Si Git se plaint de 'Origin' has already been added
, ouvrez le fichier .config
et éditez la partie url = "..."
après [remote Origin]
comme url = ssh://github/username/repo.git
Sous OS X (maintenant macOS), lancez-le dans le terminal
git config --global credential.helper osxkeychain
Cela permet à git d’utiliser Keychain.app pour stocker le nom d’utilisateur et le mot de passe, ainsi que pour récupérer le mot de passe composé sur votre clé ssh privée à partir du trousseau.
Pour les fenêtres utiliser:
git config --global credential.helper wincred
Si l'assistant d'identification de git est correctement configuré, macOS enregistre la phrase secrète dans le trousseau. Parfois, la connexion entre ssh et les mots de passe stockés dans le trousseau peut être rompue. Exécutez ssh-add -K
ou ssh-add ~/.ssh/id_rsa
pour ajouter à nouveau la clé au trousseau.
Pour macOS 10.12, Sierra ssh-add -K
doit être exécuté après chaque redémarrage. Pour éviter cela, créez ~/.ssh/config
avec ce contenu.
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
À partir de la page ssh_config
man
du 10.12.2:
UseKeychain
Sous macOS, spécifie si le système doit rechercher des phrases secrètes dans le trousseau de l'utilisateur lorsqu'il tente d'utiliser une clé particulière. Lorsque la phrase secrète est fournie par l'utilisateur, cette option spécifie également si la phrase secrète doit être stockée dans le trousseau une fois qu'il a été vérifié qu'il est correct. L'argument doit être «oui» ou «non». La valeur par défaut est "non".
Apple a ajouté Technote 2449 qui explique ce qui s'est passé.
Avant macOS Sierra, ssh présentait une boîte de dialogue vous demandant votre phrase secrète et vous offrait la possibilité de la stocker dans le trousseau. Cette interface utilisateur a été obsolète il y a quelque temps et a été supprimée.
Cela m'est arrivé lorsque j'ai mis à niveau vers macOS Sierra. On dirait que l'agent ssh a été effacé lors de la mise à niveau.
$ ssh-add -L
The agent has no identities.
Il suffit de lancer ssh-add
pour localiser mon identité existante, entrer le mot de passe et recommencer.
Utilisez ceci: Remplacez github.com par le nom d'hôte approprié
git remote set-url Origin [email protected]:user/repo.git
Comme d'autres l'ont dit, vous pouvez installer un assistant de cache de mots de passe. Je voulais surtout juste poster le lien pour d'autres plateformes, et pas seulement pour Mac. J'utilise un serveur linux et cela m'a été utile: https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux
Pour Mac:
git credential-osxkeychain
Les fenêtres:
git config --global credential.helper wincred
Linux:
git config --global credential.helper cache
git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)
Cherchez aussi qui vous demande la phrase secrète. Est-ce git ou votre agent SSH?
Dans mon cas, chaque fois que je faisais git pull
, il me demandait:
Enter passphrase for key '/work/username/.ssh/id_rsa':
J'ai donc supposé qu'il s'agissait d'une demande de mot de passe. J'ai donc continué à chercher des solutions, pour finalement me rendre compte que mon agent SSH était à l'arrêt. Ce qui peut être corrigé en utilisant eval $(ssh-agent)
et ssh-add
comme donné ici.
De plus, je colle ci-dessous un petit extrait que vous pouvez ajouter à votre ~/.bashrc (ou l’équivalent) pour vous assurer que votre agent ssh est démarré avec votre connexion.
Quoi qu’il en soit, c’est une erreur idiote que j’ai commise, mais le poster ici, au cas où cela permettrait à quelqu'un d’économiser du temps, comme je l’ai fait.
# start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# spawn ssh-agent
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
echo succeeded
chmod 600 ${SSH_ENV}
. ${SSH_ENV} > /dev/null
/usr/bin/ssh-add
}
if [ -f "${SSH_ENV}" ]; then
. ${SSH_ENV} > /dev/null
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
git config credential.helper store
Remarque: bien que cela soit pratique, Git stockera vos identifiants en texte clair dans un fichier local (.git-credentials) dans le répertoire de votre projet (voir ci-dessous le répertoire "home"). Si vous n'aimez pas cela, supprimez ce fichier et passez à l'option cache.
Si vous voulez que Git recommence à vous demander des informations d'identification chaque fois qu'il doit se connecter au référentiel distant, vous pouvez exécuter cette commande:
git config --unset credential.helper
Pour stocker les mots de passe dans .git-credentials dans votre répertoire% HOME%, par opposition au répertoire du projet: utilisez l'indicateur --global.
git config --global credential.helper store
Guide de Git sur Windows et Github utilisant SSH pour Push/Pull http://nathanj.github.io/gitguide/tour.html
Dans Windows pour git 1.7.9+, exécutez la commande suivante dans la commande Invite pour ouvrir le fichier de configuration dans l'éditeur de texte:
git config --global --edit
Ensuite, dans le fichier, ajoutez le bloc suivant s'il n'est pas présent ou modifiez-le en conséquence
[credential "https://giturl.com"]
username = <user id>
helper = wincred
Enregistrez et fermez le fichier . Vous devrez fournir les informations d'identification une seule fois après la modification ci-dessus.
Utilisez la commande suivante pour augmenter le délai d'expiration afin de pouvoir retaper le mot de passe pendant un certain temps.
git config --global credential.helper 'cache --timeout 3600'
Je l'ai utilisé pour Bitbucket et Github cela fonctionne pour les deux. La seule chose que vous devez faire est que 3600
est en secondes, augmentez-le dans la mesure de votre choix. Je l'ai changé en 259200
, ce qui représente environ 30 jours. De cette façon, je ressaisis mon mot de passe tous les 30 jours environ.
Je suppose que vous avez réglé votre problème, mais je ne vois pas la solution qui m’a aidé, alors la voici.
Tapez le terminal:
echo "" > ~/.ssh/known_hosts
Cela videra votre fichier known_hosts
et vous devrez ajouter chaque hôte que vous avez utilisé et auquel vous vous êtes connecté, mais le problème a été résolu.
Comme dit static_rtti ci-dessus, changez
https://github.com/username/repo.git
git://github.com/username/repo.git
à
ssh://[email protected]/username/repo.git
J'ai moi-même changé le https dans le fichier .git/config en ssh, mais cela ne fonctionnait toujours pas. Ensuite, j'ai vu que vous DEVEZ changer github.com en [email protected]. Un bon moyen d’obtenir l’URL correcte est d’aller sur la page de votre projet et de cliquer dessus.
Modifiez HTTPS en SSH pour obtenir la bonne URL
Ajoutez ensuite cette URL au fichier de configuration.
la réponse d'Orkoden sur l'utilisation du trousseau avec git dans votre terminal était incomplète et soulevait des erreurs. Voici ce que vous devez faire pour enregistrer le nom d'utilisateur et le mot de passe que vous entrez dans le terminal de votre trousseau:
curl http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain -o git-credential-osxkeychain
Sudo mv git-credential-osxkeychain /usr/local/bin
Sudo chmod u+x /usr/local/bin/git-credential-osxkeychain
Puis entrez
git config --global credential.helper osxkeychain
Si vous avez déjà fait la partie avec git config avant les choses curl, ce n'est pas grave, ça va marcher
Je suis d'accord avec "codehugger" et en utilisant l'instruction de "orkoden" cela a fonctionné pour moi - sur netbeans 7.3 - lorsque vous cliquez avec le bouton droit de la souris sur le fichier et sélectionnez le menu contextuel - Push - une fenêtre "Push to remote" s'ouvre options ici
Origin:https://github.com/myaccount/myproject.git/
https://github.com/myaccount/myproject.git/
Comme vous pouvez le constater, la différence réside dans le paramètre Origin de l'URL - vous ne souhaitez pas choisir cette option (1), vous souhaitez cocher l'option (2), ce qui me convient parfaitement. J'espère que cela aidera quelqu'un.
Dung Le.
Etape 1: vérifiez votre configuration actuelle
cat .git/config
Tu auras:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "Origin"]
url = https://github.com/path_to_your_git.git
fetch = +refs/heads/*:refs/remotes/Origin/*
[user]
name = your_username
email = your_email
[branch "master-staging"]
remote = Origin
merge = refs/heads/master-staging
Étape 2: supprimez votre origine à distance
git remote rm Origin
Etape 3: ajoutez l’origine à distance avec votre nom d’utilisateur et votre mot de passe
git remote add Origin https://your_git_username:[email protected]/path_to_your_git.git
Avant de pouvoir utiliser votre clé avec github, suivez cette étape dans le tutoriel Test de votre connexion SSH :
$ ssh -T [email protected]
# Attempts to ssh to GitHub
Si vous utilisez Windows et que cela a soudainement commencé à se produire à l'improviste sur GitHub, c'est probablement dû au récent désactivation du support _ de Github pour les algorithmes cryptographiques déconseillés le 2018-02-22, auquel cas la solution est simplement pour télécharger et installer la dernière version de Git pour Windows ou simplement de Git Credential Manager pour Windows .
Si Git vous invite à entrer un nom d'utilisateur et un mot de passe chaque fois que vous essayez d'interagir avec GitHub, vous utilisez probablement l'URL de clone HTTPS de votre référentiel.
L'utilisation d'une URL distante HTTPS présente certains avantages: elle est plus facile à configurer que SSH et fonctionne généralement avec des pare-feu et des serveurs proxy strictes. Cependant, il vous invite également à saisir vos informations d'identification GitHub chaque fois que vous extrayez ou poussez un référentiel.
Vous pouvez configurer Git pour stocker votre mot de passe pour vous. Pour les fenêtres :
git config --global credential.helper wincred
Il existe différents types d'authentification en fonction de votre configuration. En voici quelques uns:
git credential-osxkeychain
.
Si vos informations d'identification sont invalides, supprimez-les en:
git credential-osxkeychain erase
ou:
printf "protocol=https\nhost=github.com\n" | git credential-osxkeychain erase
Donc, git ne vous demandera plus la permission du trousseau. Puis configurez-le à nouveau.
Voir: Mise à jour des informations d'identification à partir du trousseau OSX sur GitHub
Votre clé SSH RSA.
Pour cela, vous devez comparer votre clé SSH avec ce que vous avez ajouté, vérifiez par ssh-add -L
/ssh-add -l
si vous utilisez la bonne identité.
Votre authentification HTTPS (si vous utilisez le protocole https
au lieu du protocole ssh
).
Utilisez ~/.netrc
(%HOME%/_netrc
sous Windows) pour fournir vos informations d'identification, par exemple.
machine stash1.mycompany.com
login myusername
password mypassword
En savoir plus: Synchroniser avec GitHub at SO
avoir une faute de frappe dans l'URL obligera git à vous demander un nom d'utilisateur et un mot de passe, stupide git
testé sur Linux Kali, version 2.7.0 de Git
essayer:
git clone https://github.com/thisrepodoesntexists/doesntexists.git
Je me sens comme la réponse fournie par static_rtti est hacky dans un certain sens. Je ne sais pas si cela était disponible plus tôt, mais les outils Git fournissent maintenant le stockage des informations d'identification.
Mode cache
$ git config --global credential.helper cache
Utilisez le mode «cache» pour conserver les informations d’identité en mémoire pendant un certain temps. Aucun des mots de passe n'est jamais stocké sur le disque et ils sont purgés du cache après 15 minutes.
Mode magasin
$ git config --global credential.helper 'store --file ~/.my-credentials'
Utilisez le mode "magasin" pour enregistrer les informations d'identification dans un fichier texte sur disque, et elles n'expirent jamais.
J'ai personnellement utilisé le mode store. Supprimé mon repo, le cloné et devait ensuite entrer mes informations d'identification une fois.
Référence: https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage