Je me suis un peu habitué à ce que Github demande toujours mon nom d'utilisateur et mon mot de passe lorsque je clone un référentiel. Je souhaite contourner cette étape car il s'agit d'une gêne au sein de mon flux de travail.
J'ai essayé de configurer une clé SSH (ce que j'ai réussi à faire) à l'aide de ce guide. https://help.github.com/articles/generating-ssh-keys et j'ai réussi.
Mon problème est que mon mot de passe github et ma phrase secrète me sont toujours demandés lors du clonage d'un référentiel (à l'aide de SSH). D'après ce que j'avais compris, après avoir configuré cette clé SSH, je n'aurais plus à le faire.
Je ne sais pas trop quoi demander, alors je vais simplement énoncer mon objectif.
Je veux pouvoir cloner des référentiels sans avoir à entrer mes informations Github tout le temps .
Qu'est-ce qui me manque avec ma clé SSH? Si quelqu'un pouvait fournir des conseils ou des ressources, je l'apprécierais, car je me suis toujours senti un peu perdu en ce qui concerne l'authentification SSH dans GitHub.
A ma connaissance, il s'agit d'une commande qui teste si tout fonctionne correctement, voici le résultat de ma console:
~ $ ssh -T [email protected]
Saving password to keychain failed
Enter passphrase for key '/Users/MYNAME/.ssh/id_rsa':
Hi MYNAME! You've successfully authenticated, but GitHub does not provide Shell access.
Lorsque je saisis mon mot de passe, cela devrait-il échouer en premier? Ensuite, lorsque je saisis ma phrase secrète, elle passe.
Si vous travaillez avec HTTPs
urls, votre nom d'utilisateur/mot de passe sera toujours demandé.
Si vous utilisez correctement SSH
lors du clonage/réglage des télécommandes. Assurez-vous ensuite que ssh-agent vous rappelle votre mot de passe. De cette façon, vous ne saisirez votre phrase secrète qu'une seule fois par session de terminal.
Si cela reste trop agaçant, définissez simplement une clé ssh sans phrase secrète.
Il peut arriver que, dans certains cas, vous ne souhaitez pas que la phrase secrète soit stockée dans le trousseau, mais que vous ne souhaitiez pas être obligé de la saisir encore et encore.
Vous pouvez faire ça comme ça:
ssh-add ~/.ssh/id_rsa
Cela vous demandera le mot de passe, entrez-le et il ne vous le demandera plus jusqu'à ce que vous le redémarriez.
Comme @dennis le fait remarquer dans les commentaires, pour conserver la phrase secrète pendant le redémarrage en la stockant dans votre trousseau, vous pouvez utiliser l'option -K
(-k
pour Ubuntu) lorsque vous ajoutez l'identité de la manière suivante:
ssh-add -K ~/.ssh/id_rsa
Encore une fois, cela vous demandera la phrase secrète, entrez-la et cette fois, elle ne vous demandera plus jamais cette identité.
Sur Mac OSX, vous pouvez ajouter votre clé privée au trousseau à l’aide de la commande suivante:
ssh-add -K /path/to/private_key
Si votre clé privée est stockée dans ~/.ssh et s'appelle id_rsa:
ssh-add -K ~/.ssh/id_rsa
Vous serez alors invité à entrer votre mot de passe, qui sera stocké dans votre trousseau.
Edit - Handle restart
Afin de ne pas avoir à saisir votre mot de passe même après un redémarrage, ajoutez ce qui suit dans votre fichier de configuration ssh (généralement situé dans ~/.ssh/config)
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
J'ai essayé toutes les réponses ici et aucune de ces réponses n'a fonctionné ! Mon mot de passe ne persisterait pas entre les sessions/redémarrages de mon Mac.
Ce que j'ai découvert en lisant cet OpenRadar et cette discussion sur Twitter était que Apple a délibérément modifié le comportement pour ssh-agent dans macOS 10.12 Sierra à no plus charger automatiquement les clés SSH précédentes. Afin de conserver le même comportement qu'El Cap, j'ai procédé comme suit:
ssh-add -K ~/.ssh/id_rsa
ssh-add -A
Créez (ou éditez s'il existe) le fichier ~/.ssh/config
suivant:
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
Et maintenant, mon mot de passe est mémorisé entre les redémarrages de mon Mac!
Vous pouvez supprimer le mot de passe pour la clé
$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
ou tu peux courir
$ ssh-keygen -p
vous obtenez une invite pour le fichier de clés. Par défaut, il ~/.ssh/id_rsa
alors appuyez sur entrée
Vous serez invité à entrer la phrase de passe actuelle.
Ensuite, il y aura une invite pour la nouvelle phrase de passe, appuyez sur Entrée
Il suffit de lancer la commande suivante:
ssh-add -K
Il ne vous demandera jamais d'entrer le mot de passe à nouveau.
Assurez-vous également que vous utilisez ssh pour votre référentiel
mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v Origin [email protected]:eMahtab/jenkins-cje-2017.git (fetch) Origin [email protected]:eMahtab/jenkins-cje-2017.git (Push)
N'utilisez pas https, si votre télécommande utilise https, elle continuera à demander le mot de passe, même si vous avez ajouté la clé publique à Github et la clé privée à ssh-agent. Ci-dessous toujours demander un mot de passe
mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v Origin https://github.com/eMahtab/jenkins-cje-2017.git (fetch) Origin https://github.com/eMahtab/jenkins-cje-2017.git (Push)
Si vous utilisez Windows, cela a fonctionné pour moi:
eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa
Il demandera la phrase secrète dans la deuxième commande, et c'est tout.
Je devais exécuter:
eval `ssh-agent -s`
ssh-add
Remarque : Vous devrez le refaire après chaque redémarrage. Si vous voulez l'éviter, entrez-le dans votre fichier ". Bashrc " qui se trouve dans C:\Users\<<USERNAME>>\.bashrc
sous Windows. Il est probablement caché, assurez-vous que vous pouvez voir les fichiers cachés.
Solution trouvée ici .
Essayez ssh-agent
comme il est expliqué ici: https://help.github.com/articles/working-with-ssh-key-passphrases
Cette réponse a fonctionné pour moi dans Ubuntu
.
Voir ce document GitHub pour convertir l'URL de remote de https en ssh. https://help.github.com/articles/changing-a-remote-s-url/
Pour vérifier si l'URL de la télécommande est ssh ou https, utilisez git remote -v
.
Pour passer de https à ssh:git remote set-url Origin [email protected]:USERNAME/REPOSITORY.git
Pour Mac OSX Sierra, j’ai constaté que les corrections suggérées dans le problème github d’Open Radar corrigeaient mon problème. On dirait que Sierra a changé le comportement par défaut (j'ai commencé à avoir ce problème après la mise à niveau).
J'ai trouvé cela particulièrement utile: https://github.com/lionheart/openradar-mirror/issues/15361#issuecomment-249059061
ssh-add -A
Cela a entraîné l’ajout de mon identité à l’agent, après j’ai exécuté
ssh-add -K {/path/to/key}
Pour résumer, dans OSX.12:
ssh-add -K {/path/to/key}
ssh-add -A
devrait aboutir à:
Identity added: {/path/to/file} ({/path/to/file})
EDIT: J'ai remarqué que la prochaine fois que je ferais un redémarrage complet (c'est-à-dire que l'agent s'est arrêté et redémarré), cela ne fonctionnait plus. La solution la plus complète est ce que @ChrisJF a mentionné ci-dessus: créer un fichier ~/.ssh/config
. Voici la sortie de la mienne:
$ cat ~/.ssh/config
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
Vous pouvez ajouter autant d'entrées IdentityFile
que nécessaire, mais il s'agit de la configuration par défaut. C’est aussi la réponse "tendance" sur le lien Openradar ci-dessus, ATM.
J'ai récemment effectué une mise à niveau vers macOS Mojave et installé certains outils via homebrew, qui semblait remplacer la version de Apple par ssh-add
par une version différente. Ma version par défaut de ssh-add
ne disposait pas de l'option -K
. Cela a conduit à l'erreur suivante:
# ssh-add: illegal option -- K
Vous pouvez voir quelle version de ssh-add
vous avez en exécutant which ssh-add
.
(Le mien a été stocké dans /usr/local/bin/ssh-add
)
Pour résoudre ce problème, je devais indiquer la clé à la version d'Apple :
/usr/bin/ssh-add -K ~/.ssh/id_rsa
Git/GitHub a parfaitement fonctionné par la suite. Pour plus d'informations, voir: Erreur: ssh-add: option illégale - K
J'avais déjà défini un mot de passe, mais pour une raison quelconque, il ne le reconnaîtrait plus. Donc, je viens d'ajouter le fichier d'identité à mon trousseau en utilisant à nouveau ssh-add -K
et le système n'a plus demandé mon mot de passe.
A travaillé dans LinuxMint/Ubuntu
Faire les étapes suivantes
étape 1:
Aller au fichier => /. Ssh/config
Enregistrer les lignes ci-dessous dans le fichier
Host bitbucket.org
HostName bitbucket.org
User git
IdentityFile /home/Apple/myssh-privatekey
AddKeysToAgent yes
N'oubliez pas d'ajouter cette ligne AddKeysToAgent yes
étape 2:
Ouvrez le terminal et ajoutez le jeu de clés au ssh-add
$ ssh-add -k /home/Apple/myssh-privatekey
fournir la phrase secrète.
Le problème semble être dû au fait que vous clonez à partir de HTTPS et non de SSH. J'ai essayé toutes les autres solutions ici, mais je rencontrais toujours des problèmes. Cela l'a fait pour moi.
En utilisant le osxkeychain helper
comme ceci:
Découvrez si vous l'avez installé.
git credential-osxkeychain
S'il n'est pas installé, vous serez invité à le télécharger avec les outils de ligne de commande Xcode.
S'il est installé, dites à Git d'utiliser osxkeychain helper
en utilisant le fichier global credential.helper
config:
git config --global credential.helper osxkeychain
La prochaine fois que vous clonerez une URL HTTPS, vous serez invité à entrer votre nom d'utilisateur/mot de passe et à accorder l'accès au trousseau OSX. Après que vous fassiez cela pour la première fois, il devrait être enregistré dans votre trousseau et vous n’aurez plus à le taper à nouveau.
Si vous utilisez ssh url pour git, lorsque vous êtes invité à entrer le mot de passe pour ssh, indiquez le nom d'utilisateur sous la forme "git" et le mot de passe sous la forme mot de passe de votre système
Généralement, voici les étapes pour vous permettre d’établir une connexion à distance à votre serveur en utilisant ssh sans mot de passe:
Créer une paire de clés privée et publique rsa
$ ssh-keygen -t rsa -b 4096 -C "your comments"
Copiez votre clé publique et connectez-vous à votre serveur distant
Ajoutez votre clé publique à .ssh/allowed_keys
Si vous avez plusieurs clés ssh sur votre ordinateur, vous pouvez ajouter votre clé à l’aide de ssh-add
$ ssh-add /path/to/private/key
Puis essayez ssh sur votre serveur
$ ssh username@your_ip_address
Source: http://diary-of-programmer.blogspot.com/2018/08/tips-how-to-ssh-to-your-digitalocean.html
J'aimerais ajouter une réponse à ceux qui peuvent encore avoir besoin de saisir le mot de passe car ils ont défini IdentitiesOnly sur oui. Cela peut entraîner plusieurs clés et le fichier d’identité, clés de git ou de serveur.
Après avoir généré et copié la clé sur le serveur:
ssh-keygen
ssh-copy-id -i ~/.ssh/12gpu_server.pub [email protected]
J'ai trouvé que ça n'a pas marché.
Puis je suis allé vérifier le fichier ~/.ssh/config
, j'ai vu ceci en bas:
Host *
IdentitiesOnly yes
Puis j'ajoute ceci ci-dessus:
Host 12gpu
HostName 192.168.20.160
User lerner
IdentityFile ~/.ssh/12gpu_server
Je peux simplement me connecter en entrant ssh 12gpu
.
Ensuite, vous pouvez ajouter plusieurs clés ssh en utilisant vos noms préférés et il vous suffit d’ajouter les paramètres tels que les quatre lignes ci-dessus au fichier de configuration.
Host est le nom que vous souhaitez entrer lorsque vous vous connecterez au serveur ultérieurement. le HostName est l'adresse IP ou le domaine du serveur, comme github.com; tilisateur est le nom d'utilisateur que vous connectez au serveur, par exemple le nom d'utilisateur ou git pour github ou gitlab; et le IdentityFile est le fichier dans lequel vous stockez la clé que vous avez générée.
Utilisez ssh
l'URL distante fournie par Github et non https
.
Je pense que la réponse de @Sudo bangbang devrait être acceptée.
Lorsque vous générez une clé ssh, vous appuyez simplement sur "Entrée" pour ne pas taper votre mot de passe lorsqu'il vous invite à configurer un mot de passe.
Cela signifie que vous N'AVEZ PAS BESOIN d'un mot de passe lorsque vous utilisez la clé ssh, alors souvenez-vous que lorsque vous générez une clé ssh, NE PAS saisir le mot de passe, appuyez simplement sur 'Entrée' pour le sauter.
Mobaxterme avait une interface utilisateur pour cela
setting > configuration > SSH > SSH Agent > [check] Use internal SSH agent "moboAgent" > add [your id_rsa and restart mobaxterme to set changes]
Le même problème pour moi et la solution était:
Voir ce document github pour convertir l'URL de remote de https en ssh. Pour vérifier si l'URL de remote est ssh ou https, utilisez git remote -v. Pour passer de https à ssh: git remote set-url Origine [email protected]: USERNAME/REPOSITORY.git @jeeYem
C'est ce qui a fonctionné pour moi: git config --global core.sshCommand "'C:\Windows\System32\OpenSSH\ssh.exe'"
Si vous utilisez sous Windows et GIT sans outils tiers et que votre clé est non sécurisée par un mot de passe/phrase secrète, utilisez ceci:
Ajoutez votre hôte git-server au fichier "config" comme ceci:
#Example Host entry
Host myhostname.com
HostName myhostname.com
User git
IdentityFile c:/users/laptop/.ssh/id_rsa.pub
PasswordAuthentication no
Port 422
Enregistrez le fichier et clonez le référentiel comme ceci:
git clone ssh: //myhostname.com/git-server/repos/picalc.git
Vous pouvez utiliser des paramètres de configuration supplémentaires pour l'entrée Hôte du fichier "config". Ceux-ci peuvent être trouvés dans votre dossier d'installation git local, par exemple. "C:\Programmes\Git\etc\ssh\ssh_config". Extrait:
# Host *
# ForwardAgent no
# ForwardX11 no
# RhostsRSAAuthentication no
# RSAAuthentication yes
# PasswordAuthentication yes
# HostbasedAuthentication no
# GSSAPIAuthentication no
# GSSAPIDelegateCredentials no
# BatchMode no
# CheckHostIP yes
# AddressFamily any
# ConnectTimeout 0
# StrictHostKeyChecking ask
# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# IdentityFile ~/.ssh/id_ecdsa
# IdentityFile ~/.ssh/id_ed25519
# Port 22
# Protocol 2
# Cipher 3des
# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
# MACs hmac-md5,hmac-sha1,[email protected],hmac-ripemd160
# EscapeChar ~
# Tunnel no
# TunnelDevice any:any
# PermitLocalCommand no
# VisualHostKey no
# ProxyCommand ssh -q -W %h:%p gateway.example.com
# RekeyLimit 1G 1h