SSH-аутентификация с использованием gssapi-keyex или gssapi-with-mic (publickey не разрешен)

15

Моя компания отключила аутентификацию по открытому ключу SSH, поэтому мне приходится каждый раз вводить пароль вручную (менять его не предполагается /etc/ssh/sshd_config).

Однако gssapi-keyexи gssapi-with-micаутентификации включены (см. Ниже sshотладочный вывод).

Как я могу использовать автоматический вход в этом случае?
Могу ли я использовать gssapi-keyexи / или gssapi-with-micаутентификацию?

> ssh -v -o PreferredAuthentications=publickey hostxx.domainxx
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to hostxx.domainxx [11.22.33.44] port 22.
debug1: Connection established.
debug1: identity file /home/me/.ssh/identity type -1
debug1: identity file /home/me/.ssh/id_rsa type -1
debug1: identity file /home/me/.ssh/id_dsa type 2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'hostxx.domainxx' is known and matches the RSA host key.
debug1: Found key in /home/me/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: gssapi-keyex,gssapi-with-mic,password
debug1: No more authentication methods to try.
Permission denied (gssapi-keyex,gssapi-with-mic,password).
olibre
источник
1
Ткань Python отлично справляется с автоматизацией ssh.
Дэн Гартвейт
Привет, @DanGarthwaite. Используете ли вы Fabric для ручного входа на другие удаленные серверы? Пожалуйста, вы можете объяснить, как вы его используете. Пожалуйста, предоставьте ответ. Приветствия
olibre
3
Если вы не находитесь в области Kerberos (или в домене Active Directory), то GSSAPI вряд ли будет вам полезен. Тем не менее, отключение аутентификации с открытым ключом кажется довольно абсурдным.
Майкл Хэмптон
1
@olibre Fabric - это утилита для запуска команд на одном или нескольких серверах через SSH. Эти команды обычно организованы в «fabfile», как Makefile. Он отлично справляется с исчезновением SSH (после проверки подлинности) и обрабатывает множество способов, которыми клиенты и серверы SSH стремятся прервать управление. Доступно краткое руководство: docs.fabfile.org/en/1.7/tutorial.html
Дэн Гартвейт,
Пожалуйста @DanGarthwaite, не могли бы вы привести пример fabфайла, который будет входить на другой компьютер (SSH gssapi без запроса пароля) и открывать оболочку? Вы можете предоставить это в ответе. (За пять минут я не нашел в руководстве, как это сделать). Приветствия;)
olibre

Ответы:

19

Может быть.

  • Можете ли вы получить билет для своего принципала в своей клиентской системе либо в рамках стандартного процесса входа в систему, либо вручную ( kinitMIT Kerberos для Windows)?
  • На сервере есть основной Kerberos или вы можете дать его? Это должно быть в форме host/server.example.com@EXAMPLE.COM.
  • Включена ли GSSAPIаутентификация на вашем клиенте?
  • Знает ли ваш клиент, к какой области принадлежит сервер, с помощью записи ресурса DNS TXT или локального сопоставления?

Если вы ответили «да» на все вышеперечисленное, то поздравлениями вы можете воспользоваться GSSAPIAuthentication.

  • Вам также может потребоваться включить делегирование полномочий в зависимости от настроек.

Этапы тестирования:
(Предполагается: домен = example.com; realm = EXAMPLE.COM)

  1. kinit username@EXAMPLE.COM
    • В идеале это выполняется вашим стандартным процессом входа в систему путем включения либо pam_krb5или pam_sssauth_provider = krb5) в соответствующий pam stack.
  2. kvno host/server.example.com@EXAMPLE.COM
    • Это шаг отладки. sshделает это автоматически, если у вас есть действительный кеш, и вы говорите с sshdподдержкой gssapi-with-micили gssapi-keyex.
  3. dig _kerberos.example.com txt должен вернуться "EXAMPLE.COM"
    • В качестве альтернативы отображение может быть сохранено в [domain_realm]разделе /etc/krb5.confas .example.com = EXAMPLE.COM, но dnsметод масштабируется намного лучше.
  4. ssh -o GSSAPIAuthentication=yes username@server.example.com
    • Чтобы войти в систему под именем пользователя, отличным от имени вашего принципала на сервере, необходимо знать, чтобы сопоставить его с деталями, о которых я здесь не буду рассказывать.
84104
источник
Здравствуй. Я дал вам +1 некоторое время назад, но на самом деле, я не знаю, как проверить ваши четыре очка. (Я не администратор, просто разработчик). Пожалуйста, не могли бы вы предоставить командную строку для проверки соединения SSH с помощью gssapiauthentication? Может быть, я также могу использовать gssapiauthenticationна моей машине Linux. (я должен использовать kinitдля этого?) Приветствия;)
olibre
5

Четырехступенчатый метод является правильным (в DNS также есть записи Kerberos SRV, которые еще более элегантны и присутствуют в каждом Active Directory). Я использую это все время и защищаю вышеописанные методы pubkey, в основном по соображениям безопасности и контроля.

Тем не менее, это дает только интерактивный вход в систему, хотя он может быть квазиинтерактивным, когда вы получили билет на свою рабочую станцию. Билет Kerberos действует так же, как SSH-агент; как только у вас есть это, новые соединения мгновенно и без пароля; хотя и с ограничением по времени.

Чтобы получить интерактивный пакетный вход в систему, вам нужно получить файл keytab, файл, который по существу содержит пароль для учетной записи Kerberos, очень похожий на частную половину ключа SSH. В соответствии с мерами безопасности применяются; тем более что keytab не зашифрован и не защищен паролем.

Я очень неохотно предоставляю своим пользователям их ключевые таблицы для своих личных учетных записей, но я агрессивно использую служебные учетные записи с минимальными разрешениями для различных пакетных заданий, особенно там, где крайне важно, чтобы учетные данные делегировались удаленной системе, что-то, что Pubkey просто может сделать ». т достичь.

Keytabs могут быть созданы с помощью ktutil на Unix или KTPASS.EXE на Windows (последний из служб AD Kerberos). Обратите внимание, что ktutil существует в двух разновидностях, Heimdal и MIT, и их синтаксис отличается. Чтение справочной страницы в соответствующей системе помогает.

mansaxel
источник