%20%D0%B4%D0%BB%D1%8F%20ssh%20-K%3F.png)
Насколько я понимаю, выдача 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, чего вы не делаете).