O encaminhamento do agente SSH falha dependendo dos intermediários

2

Estou recebendo uma permissão negada ao tentar conectar-me por SSH com o encaminhamento de agente. Eu tenho quatro máquinas: minha caixa local (eu), um servidor privado (privado), um gateway público que pode rotear para o servidor privado (gateway) e um servidor público (destino).

Se eu precisar conectar-me a "destino" ou "gateway", posso simplesmente fazer o seguinte, que verifica se minha chave é válida para ambos os hosts:

me@me:~$ ssh -i my.key destination
me@me:~$ ssh -i my.key gateway

Se eu precisar conectar-me a "privado", posso fazer o seguinte, que verifica se o encaminhamento de agente está funcionando conforme o esperado e se minha chave é válida para o host:

me@me:~$ ssh -Ati my.key gateway
me@gateway:~$ ssh private

Se eu precisar conectar-me ao "destino" do "gateway", posso fazer o seguinte, que verifica se o encaminhamento do agente funciona ao se conectar ao destino:

me@me:~$ ssh -Ati my.key gateway
me@gateway:~$ ssh destination

Se eu precisar conectar a "destination" de "private", eu devo ser capaz de fazer o seguinte:

me@me:~$ ssh -Ati my.key gateway
me@gateway:~$ ssh -At private
me@private:~$ ssh destination

Mas quando eu tento o último comando, recebo Permission denied (publickey). Se eu correr com verbosidade aumentada, recebo o seguinte:

OpenSSH_6.6.1, OpenSSL 1.0.1k-fips 8 Jan 2015
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 56: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to destination [52.35.125.100] port 22.
debug1: Connection established.
debug1: identity file /home/me/.ssh/id_rsa type -1
debug1: identity file /home/me/.ssh/id_rsa-cert type -1
debug1: identity file /home/me/.ssh/id_dsa type -1
debug1: identity file /home/me/.ssh/id_dsa-cert type -1
debug1: identity file /home/me/.ssh/id_ecdsa type -1
debug1: identity file /home/me/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/me/.ssh/id_ed25519 type -1
debug1: identity file /home/me/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1
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
debug2: fd 3 setting O_NONBLOCK
debug3: load_hostkeys: loading entries for host "destination" from file "/home/me/.ssh/known_hosts"
debug3: load_hostkeys: found key type ECDSA in file /home/me/.ssh/known_hosts:7
debug3: load_hostkeys: loaded 1 keys
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],[email protected],[email protected],[email protected],[email protected],ssh-ed25519,ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: kex_parse_kexinit: [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ecdsa-sha2-nistp256,ssh-ed25519
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: mac_setup: setup [email protected]
debug1: kex: server->client aes128-ctr [email protected] none
debug2: mac_setup: setup [email protected]
debug1: kex: client->server aes128-ctr [email protected] none
debug1: kex: [email protected] need=16 dh_need=16
debug1: kex: [email protected] need=16 dh_need=16
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 01:2f:4e:3f:b3:a3:92:0f:29:e0:72:d7:d1:2c:af:4b
debug3: load_hostkeys: loading entries for host "destination" from file "/home/me/.ssh/known_hosts"
debug3: load_hostkeys: found key type ECDSA in file /home/me/.ssh/known_hosts:7
debug3: load_hostkeys: loaded 1 keys
debug3: load_hostkeys: loading entries for host "52.35.125.100" from file "/home/me/.ssh/known_hosts"
debug3: load_hostkeys: found key type ECDSA in file /home/me/.ssh/known_hosts:8
debug3: load_hostkeys: loaded 1 keys
debug1: Host 'destination' is known and matches the ECDSA host key.
debug1: Found key in /home/me/.ssh/known_hosts:7
debug1: ssh_ecdsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: me@me (0x5611e148efd0),
debug2: key: /home/me/.ssh/id_rsa ((nil)),
debug2: key: /home/me/.ssh/id_dsa ((nil)),
debug2: key: /home/me/.ssh/id_ecdsa ((nil)),
debug2: key: /home/me/.ssh/id_ed25519 ((nil)),
debug1: Authentications that can continue: publickey
debug3: start over, passed a different list publickey
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: me@me
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Trying private key: /home/me/.ssh/id_rsa
debug3: no such identity: /home/me/.ssh/id_rsa: No such file or directory
debug1: Trying private key: /home/me/.ssh/id_dsa
debug3: no such identity: /home/me/.ssh/id_dsa: No such file or directory
debug1: Trying private key: /home/me/.ssh/id_ecdsa
debug3: no such identity: /home/me/.ssh/id_ecdsa: No such file or directory
debug1: Trying private key: /home/me/.ssh/id_ed25519
debug3: no such identity: /home/me/.ssh/id_ed25519: No such file or directory
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).

Nota: Eu tentei limpar os hosts, usuários, endereços, etc. antes de postar; Eu posso ter cometido um erro de transcrição.

Também verifiquei que o SSH_AUTH_SOCK parece exportado corretamente nos sistemas intermediários:

me@gateway:~$ echo $SSH_AUTH_SOCK     # /tmp/ssh-X5p4HjmGhP/agent.918
me@private:~$ echo $SSH_AUTH_SOCK     # /tmp/ssh-aR5WfnzmgE/agent.14429

O que devo procurar para identificar o que há de errado?

    
por rich remer 04.10.2016 / 20:58

2 respostas

0

O que você deve procurar é uma variável de ambiente SSH_AUTH_SOCK= definida corretamente nos sistemas intermediários depois que você se conectar.

Após a conexão, você deve conseguir executar esse comando e obter resultados semelhantes. Se você não vir um conjunto de variáveis, o encaminhamento não aconteceu.

# export | grep SSH_AUTH
declare -x SSH_AUTH_SOCK="/tmp/ssh-oDOTx6u2AR/agent.47026"

Seu servidor deve permitir o encaminhamento e seu cliente deve estar configurado para usar o encaminhamento. A opção do servidor AllowAgentForwarding é padronizada para yes , mas pode ser desativada em seus servidores, caso tenham sido protegidos. No seu cliente, você pode usar o -A durante a conexão ou definir a opção ForwardAgent como yes . Você não deve fazer o encaminhamento para hosts não confiáveis. Então você pode fazer algo assim em sua configuração.

# where *.example.org is pattern that matches all the systems you trust
# for forwarding purposes.
Host *.example.org
    ForwardAgent yes

Olhando mais de perto o seu log, vejo que seu cliente está oferecendo a chave e o destino parece não estar aceitando.

debug2: key: me@me (0x5611e148efd0), ##  your key from the agent
debug2: key: /home/me/.ssh/id_rsa ((nil)),
debug2: key: /home/me/.ssh/id_dsa ((nil)),
debug2: key: /home/me/.ssh/id_ecdsa ((nil)),
...
debug1: Offering RSA public key: me@me
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
    
por 04.10.2016 / 21:12
0

ssh-add -l listará as chaves adicionadas em seu ssh-agent .

O que faz você pensar que está se conectando usando o ssh-agent , quando escreve o nome da chave na linha de comando? Antes de conectar ao primeiro host, execute

ssh-add my.key

Então você deve conseguir conectar do primeiro salto ao alvo.

    
por 04.10.2016 / 22:10

Tags