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.

295
demandé sur nbro 2014-01-13 19:29:30

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.

110
répondu Simon Boudrias 2014-01-13 15:43:17

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

512
répondu Komu 2017-12-02 21:01:34

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.

185
répondu Groot 2016-12-14 15:12:32

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:

  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 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!

165
répondu ChrisJF 2017-03-08 18:00:56

Exécutez simplement la commande suivante:

ssh-add -K

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

27
répondu user3640130 2017-01-11 14:08:09

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

26
répondu sudo bangbang 2016-01-14 22:11:41

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)

entrez la description de l'image ici

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)

14
répondu Mahtab Alam 2017-04-29 11:33:30

Essayez ssh-agent comme il est expliqué ici: https://help.github.com/articles/working-with-ssh-key-passphrases

8
répondu ДМИТРИЙ МАЛИКОВ 2014-01-14 19:20:50

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.

6
répondu Marina 2018-04-20 13:10:49

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.

4
répondu zedd45 2017-01-09 19:43:54

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.

3
répondu André Herculano 2015-01-12 14:20:15

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:

  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 dans le cadre des outils de ligne de commande Xcode.

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

2
répondu Bryan Perez 2017-12-15 00:16:19

J'ai dû exécuter:

eval `ssh-agent -s`
ssh-add

Note: Vous devrez le faire à nouveau après chaque redémarrage.

Solution trouvée ici .

2
répondu Black 2018-09-10 07:34:37

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

1
répondu lerner 2018-01-24 09:27:01

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

1
répondu Chris Kevin 2018-06-18 12:55:20

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

1
répondu Anang Satria 2018-08-20 14:24:47

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

0
répondu Vinayak Deshpande 2014-12-16 08:03:31

Utiliser ssh url distante fournie par Github pas https.

0
répondu Lost Koder 2017-07-04 14:41:26

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:

  1. la Variable D'environnement HOME doit être définie sur votre profil utilisateur (par exemple C:\Users\Laptop)
  2. 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!)
  3. 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
    
  4. 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
0
répondu Fabian Stern 2018-03-09 12:51:51

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

0
répondu Bruno Leite 2018-05-17 15:07:32

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]

0
répondu Amir Heshmati 2018-06-04 11:21:13