SSH ProxyJump с Kerberos

326
KevinO

Между моей рабочей станцией и местом, где мне нужно находиться, есть два промежуточных хоста. Я пытался использовать конфигурацию ProxyJump для создания этого соединения, но оно не работает.

Топология:

 ssh ssh ssh localhost.domain1.com --> h1.domain1.com --> h2.domain2.com --> dest.domain2.com 

Когда я пытаюсь использовать эту команду ниже, я получаю сообщение об ошибке

ssh -K -J h1.domain1.com,h2.domain2.com dest.domain2.com 

Он подключается к h1.domain1.com, но затем не может правильно подключиться к h2.domain2.com с невозможностью «связаться с любым KDC для области« domain2.com »(и у меня нет пароля на domain2.com, поэтому это не вариант)

OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017 debug1: Reading configuration data /home/USERNAME/.ssh/config ... debug1: Setting implicit ProxyCommand from ProxyJump: ssh -J h1.domain1.com -v -W %h:%p h2.domain2.com debug1: Executing proxy command: exec ssh -J h1.domain1.com -v -W dest.domain2.com:22 h2.domain2.com ... debug1: Connecting to h1.domain1.com [132.175.108.33] port 22. debug1: Connection established. ... debug1: Authenticating to h1.domain1.com:22 as 'USERNAME' ... debug1: Next authentication method: gssapi-with-mic debug1: Authentication succeeded (gssapi-with-mic). Authenticated to h1.domain1.com ([###.###.##.##]:22). debug1: channel_connect_stdio_fwd h2.domain2.com:22 debug1: channel 0: new [stdio-forward] debug1: getpeername failed: Bad file descriptor debug1: Requesting no-more-sessions@openssh.com debug1: Entering interactive session. debug1: pledge: network ... debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3 debug1: match: OpenSSH_5.3 pat OpenSSH_5* compat 0x0c000000 debug1: Authenticating to h2.domain2.com:22 as 'USERNAME' ... debug1: Next authentication method: gssapi-with-mic debug1: getpeername failed: Socket operation on non-socket debug1: Unspecified GSS failure. Minor code may provide more information Cannot contact any KDC for realm 'domain2.com'  debug1: Authentications that can continue: gssapi-keyex,gssapi-with-mic,password,hostbased debug1: Next authentication method: password 

Следующая команда работает, но этот сайт предполагает, что она может быть небезопасной :

ssh -K -tt h1.domain1.com ssh -K -tt h2.domain2.com ssh -K -tt dest.domain2.com 

Я считаю, что все проверки подлинности между областями установлены правильно, так как одна команда работает.

Как примечание, все в domain1.com, я могу обойтись без проблем: ssh -K -J a.domain1.com, b.domain1.com c.domain.com

Есть ли способ заставить более короткий и более безопасный ProxyJump работать с Kerberos в этой конфигурации?

0

1 ответ на вопрос

0
grawity

Аутентификация между областями не имеет никакого отношения к тому, что у вас есть пароль для другой области. Ваш клиент должен связаться с KDC домена2, чтобы получить билет для сервера, который находится в этой другой области.

Межрегиональная аутентификация работает следующим образом:

  1. Клиент @ FOO связывается с kdc.foo.com, использует пароль для получения krbtgt / FOO @ FOO (начальный TGT).
  2. Клиент @ FOO связывается с kdc.foo.com, использует krbtgt / FOO @ FOO для получения krbtgt / BAR @ FOO.
  3. Клиент @ FOO связывается с kdc.bar.org, использует krbtgt / BAR @ FOO для получения host/host1.bar.org@BAR.

Поэтому клиент должен иметь возможность достигать KDC как для своей собственной области, так и для области сервера.

(В идеале, чтобы избежать ручной krb5.confнастройки, каждая область должна иметь только записи SRV для _kerberos._udpи _kerberos._tcpуказывающие на правильный KDC.)

ProxyJump никак не влияет на это. Он устанавливает туннель, чтобы вся клиентская логика все еще работала на вашем компьютере. Поэтому Kerberos работает точно так же, как если бы вы напрямую подключались к конечному серверу.

Я ценю ваш ответ. Я извиняюсь, если упоминание о том, что кросс-сфера должным образом настроена, отвлечено от основного вопроса Так как клиент не может видеть KDC для домена2 (bar.org), это означает, что ProxyJump не может быть использован, единственный подход - это сцепленные команды ssh. Это верно? KevinO 5 лет назад 0
Да. Как описано в посте, если вы не можете связаться с KDC2, вы не можете получить билеты на серверы в realm2. (Обратите внимание, что обычно безопасно предоставлять открытый доступ к KDC - как напрямую, так и через обратный прокси-сервер HTTPS.) grawity 5 лет назад 0
Вы также можете настроить SSH-туннель для KDC2 (порт 88 TCP) и достичь его таким образом ... grawity 5 лет назад 0

Похожие вопросы