検索

ホームページ  >  に質問  >  本文

github - http ベースの git プッシュにパスワードが必要なのはなぜですか?

RT。パスワードなしでローカルで Git プッシュを完了する方法はすでに知っていますが、なぜ http メソッドでプッシュする前に毎回パスワード認証が必要になるのか不思議です。ネットワーク プロトコルの経験がなく、オンラインで確認したこともありません。関連する説明があるので、ここに聞きに来ました~

ringa_leeringa_lee2802日前1147

全員に返信(2)返信します

  • 我想大声告诉你

    我想大声告诉你2017-05-02 09:49:34

    これは http プロトコルの特定の特性に関連していると思います。実際、github は http プロトコルに基づく Smart http プロトコルを使用します。ただし、便宜上、後で http プロトコルを直接使用して呼び出すことにします。

    http プロトコルを使用すると、ローカル構成を行わずにリモート ウェアハウスをプッシュ、クローン、プルすることができます。つまり、このプロトコルはどこでも使用できます。つまり、ローカルに依存しません。これは、このプロトコルを ssh プロトコルと区別する主要な機能です。 Cookie などの特別なメソッドが使用されない限り、http プロトコルはリクエストの送信者を記憶したり認識したりしないためです。したがって、承認が必要なサーバーでは、データを取得またはプッシュする前に、検証のためにユーザー名とパスワードを入力する必要があります。これにより、ユーザーが誰であるか、またデータを取得またはプッシュできるかどうかをサーバーが認識できるようになります。

    http プロトコルの特性は、ssh プロトコルとはまったく逆です。ssh プロトコルは、データをプッシュまたは取得する権限があるかどうかを識別するために ssh キーに依存しますが、その場合、ssh キーはローカルに保存されます。ローカルに ssh キーがない場合、データの取得またはプッシュの操作を完了することはできません。両者はまさに相補的であり、対極的な関係を形成しています。

    これで質問の答えがわかるはずです!

    あなたの役に立つかもしれないので、以下でもう少し詳しく述べたいと思います。ここで 2 つの利点と欠点をまとめてみましょう:

    • httpプロトコル

      • 利点: URL と対応する権限がある限り、対応する操作を実行できます

      • 欠点: パスワード キャッシュ メカニズムが使用されていない限り、各操作で頻繁に検証が必要になります

    • sshプロトコル

      • 利点: データをプッシュまたは取得するときに毎回認証のためにパスワードを入力する必要はありません

      • 欠点: 使用前に ssh キーを設定して生成する必要がある

    さらに、github ウェブサイトの場合、git Pushgit pull、および git fetch は検証が必要であることがわかります。 git clone を実行するときに検証は必要ありません。このことから、g​​ithub サーバーは認証が必要な種類のサーバーであると推測できます (あくまで個人的な推測ですが、参考までに)。おそらく git clone は検証を必要としない特別に設定された操作です。 。 1つ。 git pushgit pullgit fetch的时候需要验证,而git clone的时候不需要验证。由此,我可以这样推测(只是我的个人推测,仅供参考),github的服务器就属于那种需要授权的服务器,但是可能git clone是特别设置不需要验证的操作之一。

    但是我在Github的帮助手册中发现了这句话:

    When you git clone, git fetch, git pull, or git push to a remote repository using HTTPS URLs on the command line, you'll be asked for your GitHub username and password.
    当你在命令行中使用HTTPS的URL来对远程仓库进行git clone, git fetch, git pull, 或者 git push操作时,你会被要求输入Github的用户名和密码。

    但是实际上git clone

    しかし、Github ヘルプマニュアルで次の文を見つけました: #🎜🎜#
    #🎜🎜#git clonegit fetchgit pull を行うときコマンドラインで HTTPS URL を使用してリモート リポジトリにコード>、または git Push を実行すると、GitHub のユーザー名とパスワードの入力を求められます。
    コマンドラインで HTTPS URL を使用する場合は、 git clonegit fetchgit pull、または git Push 操作では、Github のユーザー名とパスワードの入力を求められます。 #🎜🎜#
    #🎜🎜#しかし、実際には、git clone はユーザー名とパスワードの入力を必要としません。ヘルプ ドキュメントが間違っているからでしょうか? ここで、他の人が私の回答を続けられることを願っています。 !または、新しく開いた質問で回答することもできます。ここをクリックして入力してください。 #🎜🎜#

    返事
    0
  • 为情所困

    为情所困2017-05-02 09:49:34

    HTTP は入力したパスワードをどのように保存すると思いますか?

    返事
    0
  • キャンセル返事