override de opções para a configuração do cliente openssh

6

Como eu quero proteger minhas conexões ssh, eu configurei algumas opções globais de conjunto de criptografia para restringir o conjunto de algoritmos usados. Mas recentemente encontrei um servidor que não suporta alguns desses algoritmos. Portanto, preciso ativar seletivamente algoritmos reprovados para um registro de host específico na configuração do cliente (meu sistema).

Descobri que a substituição de opções não está funcionando como eu esperava. Vamos dar um exemplo mínimo (não) de trabalho para o github:

HostKeyAlgorithms [email protected],ssh-ed25519,[email protected],ecdsa-sha2-nistp521,ecdsa-sha2-nistp256

Host github
    HostKeyAlgorithms ssh-rsa
    Hostname        github.com
    Port            22
    User            git
    PubkeyAuthentication yes
    IdentityFile    ~/.ssh/some-filename-here

Tendo isso, recebo o seguinte erro ( HostKeyAlgorithms não é substituído):

debug1: /home/username/.ssh/config line 14: Applying options for github
<...>
debug2: kex_parse_kexinit: [email protected],ssh-ed25519,[email protected],ecdsa-sha2-nistp521,ecdsa-sha2-nistp256
<...>
Unable to negotiate with 192.30.252.130: no matching host key type found. Their offer: ssh-dss,ssh-rsa

Da mesma forma, não está funcionando para as opções globais PubkeyAuthentication no com uma substituição em uma configuração de host.

Além disso, o match também não ajuda:

match host github
    HostKeyAlgorithms ssh-rsa

Então, existe uma maneira de redefinir seletivamente essas opções?

NOTA: Estou usando o openssh-7.1_p2-r1 no gentoo.

    
por Alexander Sergeev 04.04.2016 / 12:22

2 respostas

3

As opções do OpenSSH podem se comportar de alguma forma estranhas à primeira vista. Mas a página de manual para ssh_config documenta bem:

For each parameter, the first obtained value will be used. The configuration files contain sections separated by “Host” specifications, and that section is only applied for hosts that match one of the patterns given in the specification. The matched host name is usually the one given on the command line (see the CanonicalizeHostname option for exceptions.)

Você pode reescrever sua configuração assim para obter o que precisa:

Host github
    HostKeyAlgorithms ssh-rsa
    Hostname        github.com
    Port            22
    User            git
    PubkeyAuthentication yes
    IdentityFile    ~/.ssh/some-filename-here
Host *
    HostKeyAlgorithms [email protected],ssh-ed25519,[email protected],ecdsa-sha2-nistp521,ecdsa-sha2-nistp256
    
por 04.04.2016 / 12:50
1

Além de algumas opções específicas (usadas com frequência) como -p para definir a porta, há as opções genéricas de -o .

ssh -o HostKeyAlgorithms=ssh-algamel

pode substituir esse valor

    
por 04.04.2016 / 12:51

Tags