Como especifico o método de troca de chaves no OpenSSH?

5

Estou tentando entender como o OpenSSH decide qual método de troca de chaves deve ser usado. O que não vejo é como especificar o método. Além disso, sei que cada servidor / cliente ssh é necessário para oferecer suporte a pelo menos dois métodos: diffie-helleman-group1-sha1 e diffie-helleman-group14-sha1 , mas não está claro para mim como o servidor e o cliente escolherão entre os dois, dado que cada programa deve suportar ambos. Eu acho que em todos os casos diffie-helleman-group14-sha1 é usado porque tem o maior grupo MODP.

Eu posso especificar a cifra e o MAC:

ssh <user@ip> -c aes256-cbc -m hmac-sha1

mas olhando nas páginas de manual eu não vejo uma opção equivalente para a troca de chaves. Alguém pode 1) me dizer uma maneira de especificar isso 2) explicar como ssh escolhe o método? (Eu suspeito que sempre escolhe o primeiro da lista, o que significa que o segundo nunca é selecionado)

    
por benf 23.04.2014 / 00:03

1 resposta

8

O OpenSSH 5.7 introduziu a opção KexAlgorithms :

ssh(1)/sshd(8): add a KexAlgorithms knob to the client and server
configuration to allow selection of which key exchange methods are
used by ssh(1) and sshd(8) and their order of preference.

Portanto, se você tiver pelo menos essa versão, poderá passar -oKexAlgorithms=<kex_list> para especificar suas preferências.

AFAICT, o cliente OpenSSH na verdade não irá imprimir qual algoritmo kex foi negociado, mas se você passar -vv e olhar as kex_parse_kexinit linhas, você pode ver a lista de algoritmos kex (assim como listas de criptografia, MAC, etc. algoritmos) suportados pelo cliente, seguidos pelas listas suportadas pelo servidor. Em teoria, o cliente selecionará o primeiro algoritmo em sua lista que também aparece na lista do servidor (ou seja, a seleção favorece a preferência do cliente). Portanto, para a lista de clientes a,b,c e a lista de servidores c,b , o cliente escolhe o algoritmo b .

    
por 23.04.2014 / 03:07