J'ai créé les clés comme indiqué dans le didacticiel github, je les ai enregistrées avec github et j'ai essayé d'utiliser ssh-agent explicitement. Pourtant, git continue de me demander ma phrase secrète chaque fois que j'essaie de faire un pull ou un push.
Quelle pourrait-être la cause?
Une fois que vous avez démarré l'agent SSH avec:
eval $(ssh-agent)
Vous devez y ajouter votre clé privée:
ssh-add
Cela vous demandera votre phrase secrète une seule fois, et vous devriez alors être autorisé à pousser, à condition que vous ayez téléchargé la clé publique sur Github.
Pour enregistrer la clé de façon permanente sur macOS:
ssh-add -K
Cela persistera après la fermeture et la réouverture en le stockant dans le trousseau de l'utilisateur.
Cela m’arrive après des redémarrages depuis la mise à niveau d’OS X El Capitan (10.11) vers macOS Sierra (10.12). La solution ssh-add
fonctionnait temporairement, mais ne persisterait pas lors d'un autre redémarrage.
La solution permanente consistait à éditer (ou créer) ~/.ssh/config
et à activer l'option UseKeychain
.
Host *
UseKeychain yes
Connexes: macOS ne cesse de demander mon mot de passe ssh depuis la mise à jour de Sierra
Si vous avez essayé ssh-add
et que vous êtes toujours invité à entrer votre phrase secrète, essayez d'utiliser ssh-add -K
. Cela ajoute votre phrase secrète à votre trousseau.
Mise à jour: si vous utilisez macOS Sierra, vous devrez probablement effectuer une autre étape, car ce qui précède risque de ne plus fonctionner. Ajoutez ce qui suit à votre ~/.ssh/config
:
Host *
UseKeychain yes
Je voudrais essayer ce qui suit:
~/.bashrc
SSH_ENV=$HOME/.ssh/environment
# 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
Ce qui a fonctionné pour moi sur Windows était (j'avais cloné le code à partir d'un 1er repo):
eval $(ssh-agent)
ssh-add
git pull
à quel moment il m'a demandé une dernière fois pour ma phrase secrète
Crédits: la solution provient de https://unix.stackexchange.com/questions/12195/how-to-avoid-being-asked-passphrase-each-time-i-Push-to-bitbucket =
Essayez d’ajouter ceci à votre ~/.ssh/config:
Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_rsa
... en supposant que votre clé privée s'appelle id_rsa
J'ai eu un problème similaire, mais les autres réponses n'ont pas résolu mon problème. Je pensais aller de l'avant et poster ceci juste au cas où quelqu'un d'autre aurait une configuration délirante comme moi.
Il s'est avéré que j'avais plusieurs clés et que Git utilisait d'abord la mauvaise. Cela me demanderait ma phrase secrète, et j'y entrerais, puis Git utiliserait une clé différente qui fonctionnerait (pour laquelle je n'avais pas besoin d'entrer la phrase secrète).
Je viens de supprimer la clé qu'il utilisait pour me demander une phrase secrète et maintenant cela fonctionne!
Il semble que vous ayez peut-être des problèmes avec SSH-Agent lui-même. Je voudrais essayer de résoudre ce problème.
1) Avez-vous fait ssh-add pour ajouter votre clé à SSH?
2) Fermez-vous la fenêtre du terminal entre deux utilisations, car si vous la fermez, vous devrez entrer le mot de passe à nouveau lorsque vous le rouvrez.
Si les solutions ci-dessus ne fonctionnent pas pour moi, une chose à vérifier est que vous avez également la clé publique (généralement id_rsa.pub
). C'est inhabituel, mais c'était la cause pour moi.
Pour créer votre clé publique à partir de votre clé privée:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
J'essaie différentes solutions mais rien n'y fait. Mais cette procédure ( Mon environnement SSH GitBash demande toujours ma phrase secrète, que puis-je faire? ) à partir de Bitbucket.com fonctionne bien:
L'idée est:
vous créez le fichier ~/.bashrc
ajouter le script suivant:
SSH_ENV=$HOME/.ssh/environment
# 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
relancez Bash