web-dev-qa-db-fra.com

Clé SSH - Toujours demander le mot de passe et la phrase secrète

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.

401
HelloWorld

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.

159
Simon Boudrias

Ajouter une identité sans trousseau

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.

Ajouter une identité à l'aide de trousseau

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é.

696
Komu

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
226
Groot

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:

  1. ssh-add -K ~/.ssh/id_rsa
    Remarque: modifiez le chemin d'accès à l'emplacement de votre clé id_rsa.
  2. ssh-add -A
  3. 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!

175
ChrisJF

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

30
sudo bangbang

Il suffit de lancer la commande suivante:

ssh-add -K

Il ne vous demandera jamais d'entrer le mot de passe à nouveau.

27
user3640130

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)

enter image description here

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)

21
Mahtab Alam

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.

14
Marina

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 .

12
Black

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

8
Chris Kevin

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.

5
zedd45

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

3
aboutaaron

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.

3
André Herculano

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.

2
DhineshYes

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:

  1. Découvrez si vous l'avez installé.

    git credential-osxkeychain

  2. S'il n'est pas installé, vous serez invité à le télécharger avec les outils de ligne de commande Xcode.

  3. 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.

2
Bryan Perez

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

1
Vinayak Deshpande

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

1
Anang Satria

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.

1
Lerner Zhang

Utilisez ssh l'URL distante fournie par Github et non https.

0
Lost Koder

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.

0
andrava

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]

0
Amir Heshmati

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

0
Bruno Leite

C'est ce qui a fonctionné pour moi: git config --global core.sshCommand "'C:\Windows\System32\OpenSSH\ssh.exe'"

0
daniel sp

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:

  1. La variable d'environnement HOME doit être définie sur votre profil utilisateur (par exemple, C:\Utilisateurs\Ordinateur portable).
  2. Allez dans le dossier C:\Utilisateurs\Ordinateur portable\.ssh\et éditez le fichier "config" (ou créez le fichier!). Exemple: C:\Utilisateurs\Ordinateur portable.ssh\config (remarque: il y a non à la fin!)
  3. 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
    
  4. 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
0
Fabian Stern