web-dev-qa-db-fra.com

Push to github sans mot de passe en utilisant ssh-key

J'ai généré une paire de clés 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 été un succès et lorsque je renomme la clé, il échoue . Mais lorsque je veux pousser mes modifications, il me demande toujours ma combinaison nom d'utilisateur/mot de passe.

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

177
Sebus

S'il vous demande un nom d'utilisateur et un mot de passe, votre télécommande Origin pointe sur l'URL https plutôt que sur 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 le ssh:

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

Tu peux faire:

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

pour changer l'URL.

349
manojlds

En plus pour les gists, il semble que vous deviez omettre le nom d'utilisateur

git remote set-url Origin [email protected]:<Project code>
9
Gordon Wells

Vous devez utiliser la version SSH et non HTTPS. Lorsque vous clonez depuis un référentiel, copiez le lien avec la version SSH, car SSH est facile à utiliser et résout tous access.You peut définir l'accès pour chaque SSH que vous avez entré 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 Generate SSH Keys

5

Dans le cas où vous utilisez effectivement l'URL SSH, mais que le nom d'utilisateur et le mot de passe sont toujours demandés lorsque git pushing:

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

Vous devriez essayer de dépanner avec:

ssh -vT [email protected]

Vous trouverez ci-dessous 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 porte 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 dans id_rsa dans le même répertoire.

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

Maintenant, quand je lance à nouveau ssh -vT [email protected], 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 sur GitHub sans me demander le nom d'utilisateur et le mot de passe :-)

4
Yuci

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]

Next N'oubliez pas de modifier le point distant comme suit git remote set-url Origin [email protected]:username/your-repository.git

0
Seenivasan