RT. Je sais déjà comment terminer git push sur github localement sans mot de passe, mais je suis curieux de savoir pourquoi la méthode http nécessite une authentification par mot de passe à chaque fois avant de pousser. Je n'ai aucune expérience avec les protocoles réseau et je n'ai pas vérifié en ligne. l'explication pertinente, alors je suis venu ici pour demander~
Je pense que cela est lié à certaines caractéristiques du protocole http. En fait, github utilise le protocole Smart http, qui est basé sur le protocole http. Mais pour plus de commodité, j'utiliserai aussi directement le protocole http pour l'appeler plus tard.
Lorsque vous utilisez le protocole http, vous pouvez pousser, cloner et extraire l'entrepôt distant sans aucune configuration locale. En d'autres termes, vous pouvez utiliser ce protocole n'importe où, c'est-à-dire qu'il est indépendant du local. Il s'agit d'une fonctionnalité majeure qui distingue ce protocole du protocole ssh. Parce que le protocole http ne se souviendra pas ou ne saura pas de qui provient la demande, à moins que des méthodes spéciales ne soient utilisées, telles que les cookies. Par conséquent, pour les serveurs qui nécessitent une autorisation, vous devez saisir votre nom d'utilisateur et votre mot de passe pour vérification avant de pouvoir obtenir ou transmettre des données, afin que le serveur sache qui vous êtes et si vous pouvez obtenir ou transmettre des données.
Les caractéristiques du protocole http sont exactement à l'opposé du protocole ssh. Le protocole ssh s'appuie sur la clé ssh pour identifier si vous avez l'autorisation de transmettre ou d'obtenir des données, tandis que la clé ssh est enregistrée localement si vous ne l'avez pas. avoir une clé ssh localement, bien sûr, l'acquisition ne peut pas être complétée ni l'opération de poussée de données. Les deux forment simplement une relation complémentaire et opposée.
Vous devriez maintenant connaître la réponse à la question !
Je voudrais en dire un peu plus ci-dessous, ce qui pourra peut-être vous être utile. Permettez-moi de résumer les avantages et les inconvénients des deux ici :
protocole http
Avantages : Cela évite les problèmes de configuration locale, tant que vous disposez de l'URL et des autorisations correspondantes, vous pouvez effectuer les opérations correspondantes
Inconvénients : Une vérification fréquente est requise pour chaque opération, à moins que le mécanisme de mise en cache des mots de passe ne soit utilisé
protocole ssh
Avantages : Pas besoin de saisir un mot de passe pour vérification à chaque fois lors de la transmission ou de l'obtention de données
Inconvénients : Besoin de configurer et de générer une clé ssh avant utilisation
De plus, pour le site github, nous constaterons que
Mais j'ai trouvé cette phrase dans le manuel d'aide de Github :git push
,git pull
etgit fetch
nécessitent une vérification, maisgit clone
ne nécessite pas de vérification. À partir de là, je peux spéculer (juste ma spéculation personnelle, à titre de référence uniquement) que le serveur github est le type de serveur qui nécessite une autorisation, mais il peut s'agir d'une des opérations spécialement définies qui ne nécessite pas de vérification.git clone
Comment pensez-vous que HTTP enregistre le mot de passe que vous avez saisi ?