Между моей рабочей станцией и местом, где мне нужно находиться, есть два промежуточных хоста. Я пытался использовать конфигурацию 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 в этой конфигурации?

1 ответ1

0

Аутентификация между областями не имеет никакого отношения к тому, что у вас есть пароль для другой области. Ваш клиент должен связаться с 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 работает точно так же, как если бы вы напрямую подключались к конечному серверу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .