Ідентифікація 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).

1
Тканина Python чудово справляється з автоматизацією ssh.
Dan Garthwaite

Привіт @DanGarthwaite Ви використовуєте Fabric для ручного входу на інші віддалені сервери? Поясніть, будь ласка, як ви цим користуєтеся. Надайте відповідь. Ура
олібре

3
Якщо ви не перебуваєте у царині Kerberos (або в домені Active Directory), то GSSAPI навряд чи вам стане в нагоді. Однак, відключення автентичності відкритих ключів видається досить абсурдним.
Майкл Хемптон

1
@olibre Fabric - це корисна програма для запуску команд на одному або декількох серверах через SSH. Ці команди, як правило, організовуються у "fabfile", як Makefile. Це робить надзвичайно хорошою роботою змушення SSH зникати (як тільки ви автентифікуєтесь) та обробляє всі безліч способів, коли клієнти та сервери SSH прагнуть перервати контроль. Доступний короткий підручник: docs.fabfile.org/en/1.7/tutorial.html
Dan Garthwaite

Будь ласка, @DanGarthwaite, чи можете ви навести приклад fabфайлу, який увійде на іншу машину (SSH gssapi, не запитуючи пароль) та відкрийте оболонку? Ви можете надати це у відповідь. (За п’ять хвилин я не знайшов у підручнику, як це зробити). Ура;)
олібре

Відповіді:


19

Можливо.

  • Чи можете ви отримати квиток для свого основного клієнта в системі клієнта або в рамках стандартного процесу входу, або вручну ( kinit, MIT Kerberos для Windows)?
  • Чи є у сервера головний kerberos або ви можете йому його дати? Вона має бути такої форми host/server.example.com@EXAMPLE.COM.
  • Чи GSSAPIввімкнено автентифікацію для вашого клієнта?
  • Чи знає ваш клієнт, до якої сфери належить сервер або за допомогою запису ресурсів DNS TXT, або за допомогою локального відображення?

Якщо ви сказали «так» усьому вищесказаному, то поздоровлення ви можете використовувати GSSAPIAuthentication.

  • Вам може знадобитися включити делегування облікових даних, залежно від налаштувань.

Етапи тестування:
(припускаючи: domain = example.com; realm = EXAMPLE.COM)

  1. kinit username@EXAMPLE.COM
    • В ідеалі цим вирішується ваш стандартний процес входу, включивши pam_krb5або pam_sss( або auth_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.confяк .example.com = EXAMPLE.COM, але dnsметод масштабується набагато краще.
  4. ssh -o GSSAPIAuthentication=yes username@server.example.com
    • Щоб увійти до імені користувача, відмінного від вашого головного на сервері, потрібно знати, щоб відобразити його деталі, про які я тут не потрапляю.

Привіт. Я давав вам +1 деякий час тому, але насправді я не знаю, як перевірити ваші чотири бали. (Я не адміністратор, а лише розробник). Чи можете ви надати командний рядок для перевірки SSH-з'єднання за допомогою gssapiauthentication? Можливо, я також можу використовувати gssapiauthenticationна своїй машині Linux. (чи варто використовувати kinitдля цього?) Ура;)
olibre

5

4-кроковий метод правильний (у DNS також є записи SRB Kerberos, які є ще більш елегантними та присутні у кожному Active Directory). Я використовую це весь час і відстоюю це вищезазначені способи віскі з, здебільшого, міркувань безпеки та контролю.

Однак, це дає лише інтерактивний вхід, хоча він може бути квазіінтерактивним, як тільки ви отримаєте квиток на свою робочу станцію. Квиток на Kerberos діє так само, як SSH-агент; як тільки у вас є, нові з'єднання миттєві та без пароля; хоча і з обмеженням часу.

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

Я дуже неохоче надаю своїм користувачам свої клавіатурні вкладки для їх особистих облікових записів, але я наполегливо використовую службові акаунти з мінімальними дозволами для різних пакетних завдань, особливо там, де критично важливо, щоб облікові дані були делеговані віддаленій системі, а щось просто не може " t досягти.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.