Обычно вы предоставляете git-серверу ваш открытый ключ (например, как это делается в github - сначала вы должны отправить им свой открытый ключ).Затем он используется сервером для аутентификации.Подключившись к git-серверу, вы подписываете сообщение своим закрытым ключом.Это сообщение проверяется сервером с использованием ранее предоставленного вами открытого ключа ( см. RFC 4252, раздел 7 ).Если сервер может проверить сообщение с помощью вашего открытого ключа, он может быть уверен, что вы действительно являетесь тем, кем себя называете.
На стороне сервера открытый ключ также используется в целях аутентификации.Сервер обычно отправляет вам свой открытый ключ, как только вы подключаетесь через SSH (для RSA, например, RFC4432 ) - это когда вас просят принять определенный отпечаток открытого ключа.Если вы примете во время этого подключения и последующих подключений сервер будет использовать свой закрытый ключ, чтобы подписать сообщение для генерации ключа сеанса (подробнее об этом в секунду), которое отправляется вам.Вы пытаетесь аутентифицировать это сообщение, используя открытый ключ сервера, чтобы убедиться, что вы говорите с нужным сервером.Сообщение затем используется для получения симметричного ключа шифрования, который будет использоваться на протяжении оставшейся части сеанса.
Целью использования симметричных ключей для фактического шифрования является просто из соображений производительности, симметричная криптография намного быстрее.Это подразумевает, что асимметричные открытые / закрытые ключи просто используются в целях аутентификации.