Abaixo vou mostrar como configurar o acesso SSH a switchs Cisco mais antigos, com protocolos de troca de chaves que não são mais aceitos por padrão nas versões modernas do OpenSSH.
1. O problema
Ao tentar acessar meu servidor Cisco pela primeira vez usando ssh, recebi a seguinte mensagem de erro:
Unable to negotiate with 192.168.10.6 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1
Para resolver isso precisamos fazer algumas configurações do ssh no Cisco e no cliente.
2. Configuração do SSH no Cisco
Vou supor que todo o acesso por ssh já está configurado nas linhas vty e as configurações relacionadas à criação de usuário, senha, geração de chaves etc também já está concluída. Os comandos abaixo são apenas para resolver o problema de incompatibilidade de protocolo de troca de chaves.
Switch>
sw_cisco>enable
sw_cisco#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
sw_cisco(config)#ip ssh version 2
sw_cisco(config)#ip ssh server algorithm authentication password
sw_cisco(config)#ip ssh server algorithm publickey rsa-sha2-256 rsa-sha2-512
sw_cisco(config)#ip ssh server algorithm kex diffie-hellman-group14-sha1
sw_cisco(config)#end
sw_cisco#
sw_cisco#copy running-config strat
sw_cisco#copy running-config st
sw_cisco#copy running-config startup-config
Destination filename [startup-config]?
Building configuration...
[OK]
sw_cisco#
Isso faz com que o switch force o uso da versão mais atualizada do SSH e que ofereça, apenas, a alternativa menos pior entre os protocolos de troca de chaves disponíveis.
Essa solução foi testada em um Switch Cisco Catalyst C1000-16P-2G-L rodando IOS Version 15.2(7)E12.
3. Configuração SSH no Linux
A configuração no cliente é bem simples e foi feita com sucesso, tanto no Debian 13 trixie, quanto no Pop!_OS 24.04. Também funcionou no Windows 11, mas tive que resolver vários problemas de permissões de arquivos, que fogem do objetivo deste artigo.
Arquivo: ~/.ssh/config
Host sw_cisco
HostName ip_do_switch
User seu_usuario
PubkeyAcceptedAlgorithms +ssh-rsa
HostKeyAlgorithms +ssh-rsa
KexAlgorithms +diffie-hellman-group14-sha1
StrictHostKeyChecking accept-new
Ajuste de permissões:
chmod 600 ~/.ssh/config
4. Teste
ssh sw_cisco
Se solicitar fingerprint, responda yes.