web-dev-qa-db-fra.com

Pourquoi GitHub recommande-t-il HTTPS sur SSH?

Sur le site GitHub, il y a un lien ...

https://help.github.com/articles/generating-ssh-keys

... et ça dit ...

Si vous avez décidé de ne pas utiliser la méthode HTTPS recommandée, nous pouvons utiliser des clés SSH pour établir une connexion sécurisée entre votre ordinateur et GitHub. Les étapes ci-dessous vous aideront à générer une clé SSH, puis à ajouter la clé publique à votre compte GitHub.

Pourquoi HTTPS est-il la méthode recommandée? Existe-t-il une faille de sécurité dans la méthode SSH ou est-ce plus lent? J'ai créé une clé SSH, est-ce que cela atténuerait les problèmes de sécurité?

290
John Livermore

GitHub a changé plusieurs fois de recommandation ( exemple ).

Il semble qu’ils recommandent actuellement le protocole HTTPS, car il s’agit du moyen le plus facile à installer sur le plus grand nombre de réseaux et de plates-formes, ainsi que par les utilisateurs novices.

Il n'y a pas de faille inhérente dans SSH (s'il y en avait une qui la désactive) - dans les liens ci-dessous, vous verrez qu'ils fournissent toujours des détails sur les connexions SSH:

  1. HTTPS est moins susceptible d'être bloqué par un pare-feu.

    https://help.github.com/articles/which-remote-url-should-i-use/

    Les URL de clonage https: // sont disponibles sur tous les référentiels, publics et privés. Ces URL fonctionnent partout, même si vous êtes derrière un pare-feu ou un proxy.

  2. Une connexion HTTPS permet à credential.helper de mettre en cache votre mot de passe.

    https://help.github.com/articles/set-up-git

    Bon à savoir: l'assistant d'informations d'identification ne fonctionne que lorsque vous clonez une URL de dépôt HTTPS. Si vous utilisez plutôt l'URL du référentiel SSH, les clés SSH sont utilisées pour l'authentification. Bien que nous ne le recommandons pas, si vous souhaitez utiliser cette méthode, consultez ce guide pour vous aider à générer et à utiliser une clé SSH.

166
k107

Je suppose que HTTPS est recommandé par GitHub pour plusieurs raisons

1) Il est plus simple de l'utiliser de n'importe où, car vous avez seulement besoin des détails de votre compte (aucune clé SSH requise).

2) HTTPS Est un port ouvert dans tous les pare-feu. SSH n'est pas toujours ouvert en tant que port pour la communication avec des réseaux externes

Un référentiel GitHub est donc plus universellement accessible via HTTPS que SSH.

À mon avis, les clés SSH valent le peu de travail supplémentaire pour les créer.

1) Les clés SSH ne donnent pas accès à votre compte GitHub, votre compte ne peut donc pas être piraté si votre clé est volée.

2) L'utilisation d'une phrase clé forte avec votre clé SSH limite toute utilisation abusive, même si votre clé est volée

Si les informations d'identification de votre compte GitHub (nom d'utilisateur/mot de passe) sont volées, vous pouvez modifier votre mot de passe GitHub pour vous bloquer l'accès et supprimer rapidement tous vos référentiels partagés.

Si une clé privée est volée, quelqu'un peut forcer l'insertion d'un référentiel vide et effacer l'historique des modifications de chaque référentiel que vous possédez, mais ne peut rien modifier dans votre compte GitHub. Il sera beaucoup plus facile d'essayer de récupérer de cette violation si vous avez accès à votre compte GitHub.

Ma préférence est d'utiliser SSH avec une clé protégée par mot de passe. J'ai une clé SSH différente pour chaque ordinateur. Par conséquent, si cette machine est volée ou si une clé est compromise, je peux rapidement me connecter à GitHub et supprimer cette clé pour empêcher tout accès indésirable.

SSH peut être tunnelé via HTTPS si le réseau sur lequel vous vous trouvez bloque le port SSH.

https://help.github.com/articles/using-ssh-over-the-https-port/

Si vous utilisez HTTPS, je vous recommanderais d'ajouter une authentification à deux facteurs, afin de protéger votre compte ainsi que vos référentiels.

Si vous utilisez HTTPS avec un outil (un éditeur, par exemple), vous devez utiliser un jeton de développeur de votre compte GitHub plutôt que le nom d'utilisateur et le mot de passe en cache dans la configuration de cet outil.

40
jr0cket

Soit vous citez mal ou github a des recommandations différentes sur des pages différentes, soit ils peuvent apprendre avec le temps et mettre à jour leur reco.

Nous recommandons fortement d'utiliser une connexion SSH lors de l'interaction avec GitHub. Les clés SSH sont un moyen d'identifier les ordinateurs sécurisés, sans mot de passe. Les étapes ci-dessous vous aideront à générer une clé SSH, puis à ajouter la clé publique à votre compte GitHub .

https://help.github.com/articles/generating-ssh-keys

12
Sid Sarasvati

Voir aussi: the officiel Quelle URL distante devrais-je utiliser? répondez sur help.github.com.

EDIT:

Il semble qu'il ne soit plus nécessaire d'avoir un accès en écriture à un référentiel public pour utiliser une URL SSH, rendant mon explication originale invalide.

ORIGINAL:

Apparemment, la principale raison de privilégier les URL HTTPS est que les URL SSH ne fonctionneront pas avec un référentiel public si vous n’avez pas accès en écriture à ce référentiel.

L'utilisation d'URL SSH est recommandée pour le déploiement sur des serveurs de production. Cependant, le contexte ici est sans doute celui de services tels que Heroku.

9
Mark Tye

Activation des connexions SSH sur HTTPS si le pare-feu le bloque

Testez si SSH sur le port HTTPS est possible, exécutez cette commande SSH:

$ ssh -T -p 443 [email protected]
Hi username! You've successfully authenticated, but GitHub does not
provide Shell access.

Si cela a fonctionné, génial! Sinon, vous devrez peut-être suivre notre guide de dépannage .

Si vous pouvez entrer SSH dans [email protected] sur le port 443 , vous pouvez remplacer vos paramètres SSH pour forcer toute connexion à GitHub à s'exécuter si serveur et port.

Pour définir cela dans votre configuration ssh, éditez le fichier sous ~/.ssh/config et ajoutez cette section:

Host github.com
  Hostname ssh.github.com
  Port 443

Vous pouvez vérifier que cela fonctionne en vous connectant une fois de plus à GitHub:

$ ssh -T [email protected]
Hi username! You've successfully authenticated, but GitHub does not
provide Shell access.

De authentification auprès de GitHub/Utilisation de SSH sur le port HTTPS

6
mja

Il est possible d'affirmer que l'utilisation de la clé SSH pour s'authentifier est moins sécurisée, car nous avons tendance à changer notre mot de passe plus périodiquement que nous générons de nouvelles clés SSH.

Les serveurs qui limitent la durée de vie pour laquelle ils honoreront des clés SSH données peuvent aider à forcer les utilisateurs à actualiser régulièrement les clés SSH.

0
benhorgen