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 [email protected]
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?

Sebus
la source
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:

[email protected]:<Username>/<Project>.git

Tu peux faire:

git remote set-url origin [email protected]:<Username>/<Project>.git

pour changer l'URL.

manojlds
la source
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\//[email protected]:/')
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 [email protected]:<Project code>
Gordon Wells
la source
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 [email protected]:<Username>/<Project>.git

Vous devriez essayer de dépanner avec:

ssh -vT [email protected]

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 [email protected]nouveau, 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 :-)

Yuci
la source
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

Hazarapet Tunanyan
la source
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 [email protected]

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

git remote set-url origin [email protected]:username/your-repository.git
Seenivasan
la source
-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 "[email protected]"

é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]
Jitendra
la source
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