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?
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.
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/
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.
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:
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.
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.
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
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.
La bonne solution est:
echo %USERPROFILE%
echo "" > .bashrc
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!