1

Я пытаюсь запустить следующую команду:

ssh -vT git@github.com

Сначала я понял, что это не сработало (разрешение запрещено), потому что у меня нет открытого ключа, сохраненного в моей личной учетной записи на github. После сохранения моего открытого ключа на моем личном github, команда ssh работает. Тем не менее, я заметил, что этот ssh задействовал пользователя git , и что github требует использования пользователя git даже если он использует мой открытый ключ для аутентификации.

https://help.github.com/articles/error-permission-denied-publickey/

Все соединения, в том числе для удаленных URL-адресов, должны быть выполнены как пользователь "git". Если вы попытаетесь соединиться с вашим именем пользователя на GitHub, произойдет сбой.

Что тут происходит? Я вхожу в систему как git или как я?

2 ответа2

1

Короткий ответ - вы входите в систему (или получаете доступ к Github) как вы сами.
Мягкая детализация: вы используете идентификационную информацию, аутентифицированную парой ключей SSH, которую вы использовали.

Для доступа к Github через Интернет (браузер) вы используете комбинацию имени пользователя и пароля. Принимая во внимание, что при доступе через SSH вы не использовали свой пароль или имя пользователя. Как ваша личность удостоверяется (?) ты спрашиваешь.

Вот где приходит пара ключей SSH. Я собираюсь объяснить, как пара ключей здесь заменяет имя пользователя / пароль, не вдаваясь в подробности того, как это работает (об этом достаточно документации).

Чтобы не усложнять этот ответ, мы можем рассматривать ваш открытый ключ SSH как имя пользователя, которое будет аутентифицировано с помощью соответствующего закрытого ключа SSH, который действует как пароль. Хотя работа SSH отличается от работы имени пользователя / пароля, результат аналогичен (вы идентифицированы и аутентифицированы в Github).

Github использует общее имя пользователя git для выполнения аутентификации на основе SSH.

Вы настроили этот открытый ключ в своей учетной записи Github после входа с использованием вашего имени пользователя / пароля на основе доступа. Это действие ограничено этим защищенным доступом. Только кто-то с таким доступом может иметь открытый ключ.

Закрытый ключ, соответствующий этому открытому ключу (ваш пароль в этом обсуждении), находится в защищенном паролем логине, откуда вы запускаете команду git clone.

Таким образом, когда вы вызываете git over SSH из своего логина, протокол SSH работает, чтобы Github мог подтвердить, что этот доступ осуществляется владельцем установки открытого ключа в вашей учетной записи. Транзитивно, владелец этой учетной записи Github.

0

Что касается SSH, вы входите в систему как пользователь git . Демон sshd Github будет регистрировать локальный идентификатор открытого ключа, который использовался при аутентификации, но кроме этого у вас нет личной учетной записи на уровне операционной системы на серверах Github.

Само приложение службы Github SSH - это отдельная история. Он видит идентификатор открытого ключа, сообщаемый sshd , и использует его для получения сведений о пользователе Github из базы данных, которая также используется веб-интерфейсом Github. В результате служба предоставит вам соответствующий доступ к вашей учетной записи Github, и не более.

SSH имеет дело с учетными записями пользователей на уровне операционной системы : он не знает об учетных записях, созданных в контексте конкретных приложений.

Ваша учетная запись Github похожа, например, на учетную запись базы данных MySQL: она существует только в контексте этого приложения (или механизма базы данных).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .