%20para%20ssh%20-K%3F.png)
Pelo que entendi, a emissão ssh -K somehost
usará um token Kerberos para autenticar com somehost
. É possível especificar qual arquivo usar como token?
Observe que o Kerberos não está configurado corretamente em minha máquina, mas copiei apenas o TGT de uma máquina na qual o Kerberos está configurado corretamente.
Mais especificamente, copiei o token para /tmp/krb5cc_1000
(onde 1000 é meu uid), para que klist
reconheça o token da seguinte forma:
➜ ~ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: [email protected]
Valid starting Expires Service principal
XXXX
XXXX
Eu gostaria de fazer isso porque atualmente preciso ssh
do meu laptop (L) para um servidor gateway (G) no qual posso emitir o token e depois fazer ssh para o servidor final (S). Dado que o token pode ser válido por um período prolongado e que o encaminhamento transparente de ssh simplificaria minha configuração de desenvolvimento, pretendo configurar ssh ProxyCommand
. No entanto, ssh ProxyCommand requer que todas as chaves/tokens estejam presentes na máquina local (L).
Atualmente estou usando um ProxyCommand da seguinte maneira:
ProxyCommand ssh gateway nc %h %p
Isso me permite estabelecer uma conexão com (S), porém a autenticação não termina:
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
Eu tentei definir GSSAPIAuthentication yes
o que deveria forçar a autenticação via Kerberos, pelo que entendi.
Responder1
É possível especificar qual arquivo usar como token?
Não. O SSH está usando o mesmo ticket visível klist
e acessível usando GSSAPI.
copiou o TGT de uma máquina na qual o Kerberos está configurado corretamente.
Não creio que seja assim que funciona. Comece do início e configure o Kerberos corretamente.
Isso me permite estabelecer uma conexão com (S), porém a autenticação não termina:
A autenticação nem sequer começou de acordo com este log. Ele depende da troca de chaves, o que é completamente outro problema (a menos que você faça a troca de chaves gssapi, o que não faz).