/ / Как GIT знае кой съм, когато използвам ssh за влизане? - github, ssh

Как се знае кой съм, когато използвам ssh за влизане? - github, ssh

Зададох SSH вход за github като използвам следните инструкции и въпреки че работи, не мога да разбера защо работи: https://help.github.com/articles/generating-ssh-keys/

Разбирането ми за SSH е следното: клиентът създава двойка ключове, клиентът дава публичен ключ на сървъра и когато клиентът иска да влезе, той криптира съобщение на сървъра, като използва своя частен ключ, за да докаже, че той наистина е клиент.

Сега: Качвам публичния ключ XXX на Github. Когато правя "ssh -T git@github.com", Github трябва да знае, че се опитвам да вляза като мен, за да може да декриптира съобщението ми чрез XXX, нали? Така че ssh трябва да изпрати тази информация ... но как ssh знае нещо за Github, или какво е моето потребителско име? Ами ако имам няколко ключови двойки - кой ключ ще използва SSH?

Отговори:

3 за отговор № 1

Когато добавите публичния ключ SSH в своя GitHub акаунт, асоциирате този ключ с вашия GitHub акаунт.

По подразбиране е командата ssh -T git@github.com търси за id_dsa и id_rsa файлове. За да потвърдите това, опитайте ssh -T git@github.com -v.

Ако имате ключове, свързани с различни профили github, трябва да укажете с -i да използвате различни профили. ssh -T git@github.com -i /path/to/mykey


2 за отговор № 2

Накратко:

  1. SSH клиентът изпраща публичен ключ на сървъра
  2. Сървърът намира името ви според публичен ключ (уникален), но трябва да потвърди, че имате и частен ключ, затова ви изпраща някакво съобщение
  3. Вашият клиент подписва това съобщение с личния ви ключ
  4. Сървърът проверява подписа и ако е валиден, имате достъп до него

Това се основава на криптографията с публичен ключ, специално техниката на цифровия подпис (google за повече подробности).


0 за отговор № 3

При сценарий за споделена сметка удостоверяването / упълномощаването се обработва от приложението.

Не съм сигурен, че Github го използва, но едно решение за оторизиране на профила, което не е за черупки, е Gitosis, и то използва точно за целта, която описвате. За всеки потребител има отделни двойки ключове. Това много прилича на това, което прави Github.

Основната идея за това как функционира глиозата (отлаганеавтентичността и разрешаването на гитоза) е обяснено на страницата с readme app, но механиците могат да изискват преглед на изходния код. Въз основа на кратък преглед, изглежда, че механизмите на този метод са предимно чрез git куки на сървъра.