Как вручную указать токен (tgt) для ssh -K?

Как вручную указать токен (tgt) для ssh -K?

Насколько я понимаю, выдача ssh -K somehostбудет использовать токен kerberos для аутентификации с somehost. Можно ли указать, какой файл использовать в качестве токена?

Обратите внимание, что на моем компьютере Kerberos настроен неправильно, но я скопировал TGT только с компьютера, на котором Kerberos настроен правильно.

Точнее, я скопировал токен в /tmp/krb5cc_1000(где 1000 — мой uid), чтобы он klistраспознавал токен следующим образом:

➜  ~ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: [email protected]

Valid starting       Expires              Service principal  
XXXX  
XXXX

Я хотел бы сделать это, поскольку в настоящее время мне нужно sshс моего ноутбука (L) на шлюзовой сервер (G), на котором я могу выдать токен, а затем ssh на конечный сервер (S). Учитывая, что токен может быть действителен в течение длительного периода времени и что прозрачная переадресация ssh упростит мою настройку разработки, я намерен настроить ssh ProxyCommand. Однако ssh ProxyCommand требует, чтобы все ключи / токены присутствовали на локальной машине (L).

В настоящее время я использую ProxyCommand следующим образом:

ProxyCommand ssh gateway nc %h %p

Это позволяет мне установить соединение с (S), однако аутентификация не завершается:

OpenSSH_7.3p1-hpn14v11, OpenSSL 1.0.2k  26 Jan 2017
debug1: Reading configuration data /home/user/.ssh/config
debug1: /home/user/.ssh/config line 1: Applying options for *
debug1: /home/user/.ssh/config line 10: Applying options for S
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Executing proxy command: exec ssh GW nc S -p 22
debug1: permanently_drop_suid: 1000
debug1: identity file /home/user/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.3p1-hpn14v11
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000
debug1: Remote is NON-HPN aware
debug1: Authenticating to S:22 as 'user'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: AUTH STATE IS 0
debug1: kex: algorithm: [email protected]
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: REQUESTED ENC.NAME is '[email protected]'
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: REQUESTED ENC.NAME is '[email protected]'
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY

Я попробовал настроить, GSSAPIAuthentication yesчто, насколько я понимаю, должно принудительно включать аутентификацию через Kerberos.

решение1

Можно ли указать, какой файл использовать в качестве токена?

Нет. SSH использует тот же билет, который виден klistи доступен с помощью GSSAPI.

скопировал TGT с машины, на которой Kerberos настроен правильно.

Я не думаю, что это так работает. Начните с самого начала и настройте kerberos правильно.

Это позволяет мне установить соединение с (S), однако аутентификация не завершается:

Согласно этому журналу, аутентификация даже не началась. Она зависла на обмене ключами, что является совершенно другой проблемой (если только вы не сделаете обмен ключами gssapi, чего вы не делаете).

Связанный контент