web-dev-qa-db-fra.com

Comment éviter que le mot de passe pour déchiffrer la clé privée doive être saisi chaque fois que vous utilisez Git Bash sous Windows?

J'ai un service de construction automatique qui télécharge depuis un dépôt privé git ... Le problème est que, lorsqu'il tente de cloner un dépôt, il doit fournir le mot de passe, car il n'est pas mémorisé. Donc, comme il n'y a pas d'interaction humaine, il attend pour toujours le mot de passe ... Comment puis-je le forcer à se souvenir de id_rsa.pub?

121
D.Giunchi

Pour les utilisateurs Windows, il suffit de noter que c’est ainsi que j’ai configuré l’environnement Git Bash pour qu’il me connecte une fois lorsque je le démarre. J'édite mon ~/.bashrc:

 eval `ssh-agent` 
 ssh-add 

Alors quand je lance Git Bash, ça ressemble à:

 Bienvenue dans Git (version 1.7.8-preview20111206) 
 (Etc) 
 Agent pid 3376 
 Entrez le mot de passe composé pour /c/Users/starmonkey/.ssh/id_dsa:
I. Identité ajoutée: /c/Users/starmonkey/.ssh/id_dsa (/c/Users/starmonkey/.ssh/id_dsa)

Et maintenant, je peux ssh sur d’autres serveurs sans me connecter à chaque fois.

Je sais que c’est une vieille question, mais je suis venu ici aujourd’hui à partir d’une recherche sur Google. J’espère donc que cela aidera les autres.

248
starmonkey

Cette réponse explique comment obtenir le nom d'utilisateur et le mot de passe GitHub pour être stockés de manière permanente, pas le mot de passe composé clé SSH.

Dans Windows, lancez simplement $ git config --global credential.helper wincred

Cela signifie que la prochaine fois que vous appuyez sur Push, vous entrez votre nom d'utilisateur et votre mot de passe comme d'habitude, mais ils seront enregistrés dans les informations d'identification Windows. Vous n'aurez plus besoin de les entrer après cela.

Comme dans, http://www.tilcode.com/Push-github-without-entering-username-password-windows-git-bash/

61
Stephen Tun Aung

Je préfère ne pas avoir à taper mon mot de passe ssh lors de l’ouverture de nouveaux terminaux; Malheureusement, la solution de starmonkey exige que le mot de passe soit saisi à chaque session. Au lieu de cela, j'ai ceci dans mon .bash_profile:

# Note: ~/.ssh/environment should not be used, as it
#       already has a different purpose in SSH.

env=~/.ssh/agent.env

# Note: Don't bother checking SSH_AGENT_PID. It's not used
#       by SSH itself, and it might even be incorrect
#       (for example, when using agent-forwarding over SSH).

agent_is_running() {
    if [ "$SSH_AUTH_SOCK" ]; then
        # ssh-add returns:
        #   0 = agent running, has keys
        #   1 = agent running, no keys
        #   2 = agent not running
        ssh-add -l >/dev/null 2>&1 || [ $? -eq 1 ]
    else
        false
    fi
}

agent_has_keys() {
    ssh-add -l >/dev/null 2>&1
}

agent_load_env() {
    . "$env" >/dev/null
}

agent_start() {
    (umask 077; ssh-agent >"$env")
    . "$env" >/dev/null
}

if ! agent_is_running; then
    agent_load_env
fi

# if your keys are not stored in ~/.ssh/id_rsa or ~/.ssh/id_dsa, you'll need
# to paste the proper path after ssh-add
if ! agent_is_running; then
    agent_start
    ssh-add
Elif ! agent_has_keys; then
    ssh-add
fi

unset env

Ceci gardera en mémoire ma phrase secrète pour les nouvelles sessions de terminal; Je n'ai qu'à le taper une fois lorsque j'ouvre mon premier terminal après le démarrage.

J'aimerais attribuer un crédit à l'endroit où j'ai obtenu ceci. Il s'agit d'une modification du travail de quelqu'un d'autre, mais je ne me souviens pas d'où il vient. Merci auteur anonyme!

Mise à jour du 01/07/2019: Je ne pense pas que tout cela soit nécessaire. Maintenant, cela fonctionne régulièrement en m'assurant que mon .bash_profile exécute ssh-agent:

eval $(ssh-agent)

Ensuite, j'ai configuré un fichier de configuration ssh comme ceci:

touch ~/.ssh/config
chmod 600 ~/.ssh/config
echo 'AddKeysToAgent yes' >> ~/.ssh/config

J'espère que cela t'aides.

6
Conan

Si je comprends bien la question, vous utilisez déjà une clé SSH autorisée dans le service de génération, mais vous souhaitez éviter de devoir saisir le mot de passe composé pour chaque clone?

Je peux penser à deux manières de faire ceci:

  1. Si votre service de génération est démarré de manière interactive: Avant de démarrer le service de génération, démarrez ssh-agent avec un délai d'expiration suffisamment long (option -t). Ensuite, utilisez ssh-add (msysGit devrait en avoir) pour ajouter toutes les clés privées dont vous avez besoin avant de démarrer votre service de construction. Vous devez toujours saisir toutes les phrases secrètes, mais une seule fois par lancement de service.

  2. Si vous voulez éviter de taper les phrases secrètes du tout, vous pouvez toujours les supprimer des clés ssh, comme décrit dans https://serverfault.com/questions/50775/how-do-i-change- my-private-key-passphrase , en définissant une nouvelle phrase secrète vide. Cela devrait supprimer complètement l'invite de mot de passe, mais est encore moins sécurisé que l'option précédente.

4
millimoose

Ce que @starmonkey a dit Au cas où vous ne comprenez pas ce qui est ~/.bashrc, cochez cette réponse SO: Git pour Windows: fichiers .bashrc ou équivalents pour Git Bash Shell

1
narak

Lorsque j'essaie de pousser mon code, j'ai l'erreur ci-dessous:

$ git Push Origin dev

remote: Too many invalid password attempts. Try logging in through the website with your password.
fatal: unable to access 'https://[email protected]/xxxx/xxxx-api.git/': The requested URL returned error: 403

après quelques heures de recherche, j'ai découvert que je devais utiliser la commande ci-dessous 

$ git config --global credential.helper cache

après avoir exécuté la commande ci-dessus, j'ai reçu l'invite pour entrer mon nom d'utilisateur et mon mot de passe git hub. Après avoir fourni les informations d'identification correctes, je peux envoyer mon code.

1
Naushad Qamar

La bonne solution est:

  1. lance le terminal Windows par défaut - cmd et récupère le répertoire de ton profil maître 

echo %USERPROFILE%

  1. lancez GitBash dans le répertoire ci-dessus et créez le fichier .bashrc avec la commande

echo "" > .bashrc

  1. ouvrez le fichier .bashrc avec votre éditeur de texte favori et collez le code de l'aide de GitHub dans ce fichier
 env = ~/.ssh/agent.env 
...
 COPIEZ LE CODE ENTIÈRE À PARTIR DE L'URL - Je ne peux pas l'ajouter à stackoverflow car il casse la présentation ... OMG!
  1. redémarrez GitBash et il vous demandera votre mot de passe (seulement la première fois) et c'est fait. Aucun mot de passe ne dérange encore.
0
Manic Depression