Poussez vers GitHub sans mot de passe à l'aide de la touche ssh


215

J'ai généré une paire de clés SSH sans mot de passe et ajouté la clé publique à GitHub.

Connexion avec

user@dev:/var/www/project# ssh -T git@github.com
Hi User! You've successfully authenticated, but GitHub does not provide shell access.

a réussi et lorsque je renomme la clé, elle échoue.

Mais quand je veux pousser mes modifications, il me demande toujours ma combinaison nom d'utilisateur et mot de passe.

Existe-t-il un moyen de pousser sans mot de passe?


9
Assurez-vous que vous n'utilisez pas https://github...dans vos télécommandes. Ils doivent également suivre le git@github...format.
cjc343

Réponses:


421

S'il vous demande un nom d'utilisateur et un mot de passe, votre télécommande d'origine pointe vers l'URL HTTPS plutôt que l'URL SSH.

Changez-le en ssh.

Par exemple, un projet GitHub comme Git aura une URL HTTPS:

https://github.com/<Username>/<Project>.git

Et celui SSH:

git@github.com:<Username>/<Project>.git

Tu peux faire:

git remote set-url origin git@github.com:<Username>/<Project>.git

pour changer l'URL.


4
Cela l'a résolu, mais je continue à me demander pourquoi Github vous conseillerait alors de pointer l'extrémité distante d'un nouveau référentiel vers une URL http par défaut. Je viens de créer un référentiel à partir de zéro, et on m'a proposé une option pour définir une URL distante https, pas une URL git.
Preslav Rachev

2
Voici une commande rapide de shell à une ligne qui changera automatiquement votre URL https en celle de git appropriée (ne fonctionne que pour les URL Github!):git remote set-url origin $(git remote show origin | grep "Fetch URL" | sed 's/ *Fetch URL: //' | sed 's/https:\/\/github.com\//git@github.com:/')
Christopher Shroba

11

De plus pour les gists, il semble que vous devez laisser de côté le nom d'utilisateur

git remote set-url origin git@gist.github.com:<Project code>

10

Dans le cas où vous utilisez effectivement l'URL SSH, mais vous êtes toujours invité à saisir votre nom d'utilisateur et votre mot de passe lorsque git pousse:

git remote set-url origin git@github.com:<Username>/<Project>.git

Vous devriez essayer de dépanner avec:

ssh -vT git@github.com

Voici un exemple de sortie:

...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_dsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ecdsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).

En fait, j'ai déjà ajouté la clé publique à GitHub auparavant, et j'ai également la clé privée localement. Cependant, ma clé privée est d'un nom différent appelé /c/Users/Yuci/.ssh/github_rsa.

Selon l'exemple de sortie, Git essaie /c/Users/Yuci/.ssh/id_rsa, ce que je n'ai pas. Par conséquent, je pourrais simplement copier github_rsaà id_rsadans le même répertoire.

cp /c/Users/Yuci/.ssh/github_rsa /c/Users/Yuci/.ssh/id_rsa

Maintenant, quand je cours à ssh -vT git@github.comnouveau, j'ai:

...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Authentication succeeded (publickey).
...
Hi <my username>! You've successfully authenticated, but GitHub does not provide shell access.
...

Et maintenant, je peux pousser vers GitHub sans qu'on me demande le nom d'utilisateur et le mot de passe :-)


5

Vous devez utiliser la version SSH , pas HTTPS . Lorsque vous clonez à partir d'un référentiel, copiez le lien avec la version SSH , car SSH est facile à utiliser et résout tous les problèmes d'accès. Vous pouvez définir l'accès pour chaque SSH que vous entrez dans votre compte (comme push, pull, clone, etc ...)

Voici un lien qui explique pourquoi nous avons besoin de SSH et comment l'utiliser: étape par étape

Git générer des clés SSH


0

Comme d'habitude, créez une clé SSH et collez la clé publique dans GitHub. Ajoutez la clé privée à ssh-agent. (Je suppose que c'est ce que vous avez fait.)

Pour vérifier que tout est correct, utilisez ssh -T git@github.com

Ensuite, n'oubliez pas de modifier le point distant comme suit:

git remote set-url origin git@github.com:username/your-repository.git

-4

En utilisant la ligne de commande:

Entrez ls -al ~/.sshpour voir si des clés SSH existantes sont présentes.

Dans le terminal est affiché: Aucun répertoire n'existe

Générez ensuite une nouvelle clé SSH

Étape 1.

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

étape 2.

Enter a file in which to save the key (/Users/you/.ssh/id_rsa): <here is file name and enter the key>

étape 3.

Enter passphrase (empty for no passphrase): [Type a password]

Enter same passphrase again: [Type password again]

Désolé, cette question ne concerne pas la façon de créer les clés mais de configurer git pour utiliser la clé au lieu de l'authentification
Sebus
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.