Clé SSH-toujours demander le mot de passe et la phrase secrète
J'ai un peu "mis en place" avec Github demandant toujours mon nom d'utilisateur et mon mot de passe quand je clone un référentiel. Je veux contourner cette étape car c'est un ennui dans Mon flux de travail.
J'ai essayé de configurer une clé SSH (ce que j'ai fait avec succès) en utilisant ce guide. https://help.github.com/articles/generating-ssh-keys et j'ai réussi.
Mon problème est qu'on me demande toujours mon mot de passe et mon mot de passe github lors du clonage d'un référentiel (en utilisant SSH). Ma compréhension était qu'après avoir configuré cette clé SSH, Je n'aurais plus à le faire.
Je ne sais pas quoi demander, Alors je vais simplement énoncer mon objectif.
je veux pouvoir cloner des dépôts sans avoir à mettre mes informations Github tout le temps.
Qu'est-ce qui me manque avec ma clé SSH? Si quelqu'un peut 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.
À Partir de ma connaissance, c'est une commande qui teste si les choses fonctionnent correctement, voici la sortie de ma console:
~ $ ssh -T git@github.com
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? Puis, quand j'entre mon mot de passe, il passe.
21 réponses
Si vous travaillez avec des URL HTTPs
, il vous demandera toujours votre nom d'utilisateur / mot de passe.
Si vous utilisez correctement SSH
lors du clonage / réglage des télécommandes. Ensuite, assurez-vous d'avoir un agent ssh pour mémoriser votre mot de passe. De cette façon, vous n'entrerez votre phrase secrète qu'une seule fois par session de terminal.
Si c'est encore trop ennuyeux, définissez simplement une clé ssh sans phrase de passe.
Ajouter une identité sans trousseau
Il peut y avoir des moments où vous ne voulez pas que la phrase secrète soit stockée dans le trousseau, mais vous ne voulez pas avoir à entrer la phrase secrète encore et encore.
, Vous pouvez le faire comme ceci:
ssh-add ~/.ssh/id_rsa
Cela vous demandera la phrase secrète, entrez-la et elle ne vous demandera plus tant que vous ne redémarrez pas.
Ajouter Une Identité À L'Aide Du Trousseau
Comme le souligne @ dennis dans les commentaires, persister la phrase secrète à travers les redémarrages en la stockant dans votre trousseau, vous pouvez utiliser l'option -K
lors de l'ajout de l'identité comme ceci:
ssh-add -K ~/.ssh/id_rsa
Encore une fois, cela vous demandera le mot de passe, entrez-le et cette fois-ci, il ne vous demandera plus jamais cette identité.
Sous Mac OSX, vous pouvez ajouter votre clé privée au trousseau à l'aide de la commande:
ssh-add -K /path/to/private_key
Si votre clé privée est stockée dans ~/.ssh et est nommé id_rsa:
ssh-add -K ~/.ssh/id_rsa
Vous serez alors invité à entrer votre mot de passe, qui sera stocké dans votre trousseau.
J'ai essayé toutes les réponses ici et aucune de ces réponses travaillé! 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 Twitter était que Apple a délibérément changé le comportement pour ssh-agent dans macOS 10.12 Sierra pour ne plus charger automatiquement les clés SSH précédentes. Afin de maintenir le même comportement que el Cap j'ai fait le suivant:
-
ssh-add -K ~/.ssh/id_rsa
Remarque: modifiez le chemin d'accès à l'emplacement de votre clé id_rsa. -
ssh-add -A
-
Créez (ou modifiez 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!
Exécutez simplement la commande suivante:
ssh-add -K
Il ne vous demandera jamais d'entrer à nouveau le mot de passe.
Vous pouvez supprimer la phrase secrète de la clé
$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
, Ou vous pouvez exécuter
$ ssh-keygen -p
Vous obtenez une invite pour keyfile. Par défaut, il ~/.ssh/id_rsa
Appuyez donc sur Entrée
Vous serez invité à entrer la phrase de passe actuelle.
Ensuite, il y aura une invite pour une nouvelle phrase de passe, appuyez sur Entrée
Assurez-vous que vous utilisez également ssh pour votre référentiel
mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v
origin git@github.com:eMahtab/jenkins-cje-2017.git (fetch)
origin git@github.com: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 ajouté la clé privée à ssh-agent. Ci-dessous demandera toujours le 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)
Essayez ssh-agent
comme il est expliqué ici: https://help.github.com/articles/working-with-ssh-key-passphrases
Si vous utilisez windows, cela a fonctionné pour moi:
eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa
Il va demander un mot de passe dans la deuxième commande, et c'est tout.
Pour Mac OSX Sierra, j'ai trouvé que les correctifs suggérés dans le problème github pour 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).
Celui-ci j'ai trouvé 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 {[15] } j'ai couru
ssh-add -K {/path/to/key}
Pour résumer, dans OSX.12:
ssh-add -K {/path/to/key}
ssh-add -A
Devrait entraîner:
Identity added: {/path/to/file} ({/path/to/file})
Modifier:
J'ai remarqué la prochaine fois que j'ai fait un redémarrage complet (aka l'agent 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 c'est la configuration par défaut. Ceci est la réponse "tendance" sur le lien openradar ci-dessus, ATM, ainsi.
J'avais déjà défini un mot de passe mais pour une raison quelconque, il ne le reconnaîtrait plus. J'ai donc juste ajouté le fichier d'identité à mon trousseau à nouveau en utilisant ssh-add -K
et il a cessé de demander mon mot de passe.
Le Problème Semble être parce 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 n'a 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 dans le cadre des outils de ligne de commande Xcode.
-
S'il est installé, dites à Git d'utiliser
osxkeychain helper
en utilisant le {[3 global]} configuration:git config --global credential.helper osxkeychain
La prochaine fois que vous clonez une url HTTPS, vous serez invité à entrer le nom d'utilisateur / mot de passe et à accorder l'accès au trousseau OSX. Après avoir fait cela la première fois, il devrait être enregistré dans votre trousseau et vous n'aurez pas à le taper à nouveau.
Je voudrais ajouter une réponse pour ceux qui peuvent encore avoir besoin pour entrer dans le mot de passe parce qu'ils ont mis IdentitiesOnly comme Oui. Cela peut causer par plusieurs clés et le fichier d'identité, étant des clés pour Git ou serveur.
Après avoir généré la clé copié sur le serveur:
ssh-keygen
ssh-copy-id -i ~/.ssh/12gpu_server.pub lerner@192.168.20.160
J'ai trouvé que ça n'avait pas marché.
Ensuite, je suis allé vérifier le fichier ~/.ssh/config
, j'ai vu cela au
en bas:
Host *
IdentitiesOnly yes
Ensuite, 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 vous seulement besoin d'ajouter les paramètres comme les quatre lignes ci-dessus à la configuration fichier.
Host est le nom que vous souhaitez entrer lorsque vous vous connectez au serveur plus tard; le nom D'hôte est l'adresse ip ou le domaine du serveur comme github.com; User est le nom d'utilisateur que vous enregistrez dans le serveur comme le nom d'utilisateur ou git github ou gitlab; et la IdentityFile est le fichier où vous stockez le la clé que vous avez généré.
Cette réponse a fonctionné pour moi dans Ubuntu
.
Consultez ce document GitHub pour convertir L'URL distante 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 git@github.com:USERNAME/REPOSITORY.git
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"
Copier votre clé publique et de connexion à votre serveur distant
-
Ajoutez votre clé publique à .ssh / authorized_keys
-
Si vous avez plusieurs clés ssh dans votre ordinateur, vous pouvez ajouter votre clé en utilisant ssh-add
$ ssh-add /path/to/private/key
-
Ensuite, essayez ssh à votre serveur
$ ssh username@your_ip_address
Source: http://diary-of-programmer.blogspot.com/2018/08/tips-how-to-ssh-to-your-digitalocean.html
Si vous utilisez l'url ssh pour git, lorsque vous êtes invité à entrer le mot de passe pour ssh, mettez le nom d'utilisateur comme " git " et le mot de passe comme le mot de passe de connexion de votre système
Si vous utilisez 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:
- la Variable D'environnement HOME doit être définie sur votre profil utilisateur (par exemple C:\Users\Laptop)
- aller à C:\Users\Laptop\.ssh\ dossier et modifier "config" fichier (ou créer le fichier!) Exemple: C:\Users\Laptop.ssh \ config (note: il n'y a pas . à la fin!)
-
Ajoutez votre hôte git-server au fichier "config" comme ça:
#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-serveur/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:\Program fichiers\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,umac-64@openssh.com,hmac-ripemd160
# EscapeChar ~
# Tunnel no
# TunnelDevice any:any
# PermitLocalCommand no
# VisualHostKey no
# ProxyCommand ssh -q -W %h:%p gateway.example.com
# RekeyLimit 1G 1h
Même problème pour moi et la solution était:
Consultez ce document github pour convertir L'URL distante de https en ssh. 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 git@github.com:USERNAME/REPOSITORY.git @jeeYem
Mobaxterme avait une interface UI pour cela
setting > configuration > SSH > SSH Agent > [check] Use internal SSH agent "moboAgent" > add [your id_rsa and restart mobaxterme to set changes]