Предположим, у меня есть четыре компьютера, портативный компьютер, Server1, Server2, сервер Kerberos:
Опишите все важные обмены протоколами SSH и KRB5: «L отправляет имя пользователя на S1», «K отправляет ... на S1» и т. Д.
(Этот вопрос предназначен для редактирования сообществом; пожалуйста, улучшите его для неопытного читателя.)
Первый вход:
pam_krb5
или pam_sss
) запрашивает TGT (билет для выдачи билетов) от Kerberos KDC. $KRB5CCNAME
переменная среды, чтобы найти ccache, или используйте klist
чтобы перечислить его содержимое.)pam_krb5
вызывается на этапе авторизации, он проверяет, ~/.k5login
существуют. Если это так, он должен указать клиентского участника Kerberos. В противном случае единственным разрешенным принципалом является имя пользователя@ПО УМОЛЧАНИЮ-РЕАЛМ
.Второй логин:
host/s2.example.com@ПРИМЕР.COM
, отправив TGS-REQ с TGT в KDC и получив от него TGS-REP с билетом службы.Обратите внимание, что вы также можете получить TGT локально. В Linux это можно сделать с помощью kinit
, затем подключитесь, используя ssh -K
. В Windows: если вы вошли в домен Windows AD, Windows сделает это за вас; в противном случае, MIT Kerberos может быть использован. PuTTY 0.61 поддерживает использование как Windows (SSPI), так и MIT (GSSAPI), хотя вы должны включить пересылку (делегирование) вручную.
1 gssapi-keyex
также возможно, но не был принят в официальный OpenSSH.
Короче говоря: в идеале билеты Kerberos должны быть получены на вашем терминале (L) либо с помощью kinit
или как часть локальной последовательности входа в систему в так называемой настройке «единого входа». В этом случае удаленные системы (S1, S2) будут доступны без запроса пароля. Цепной доступ (L → S1 → S2) будет возможен с использованием метода, известного как «пересылка билетов». Такая установка требует, в частности, чтобы KDC был доступен напрямую с терминала (L).
Другой ответ похотливость подробно объясняет этот подход.
Единственным неочевидным шагом здесь будет наличие модуля PAM на S1, который использовал ваши учетные данные для выполнения kinit
и получает билет на выдачу билета от K (аутентификация клиента). Затем, когда вы подключаетесь к S2 по SSH с использованием проверки подлинности Kerberos, выполняется проверка подлинности клиентской службы. Я не вижу пользы в том, чтобы проходить через все утомительные обмены сообщениями.
Бросить -vvv
в вашей команде ssh, если вы хотите видеть каждое сообщение и читать Описание в Википедии Kerberos.