Introdução
Este documento descreve como configurar e depurar o Secure Shell (SSH) nos roteadores ou switches Cisco que executam o software Cisco IOS®.
Pré-requisitos
Requisitos
A imagem IOS Cisco usada deve ser uma k9(crypto) imagem a fim de dar suporte ao SSH. Por exemplo, c3750e-universalk9-tar.122-35.SE5.tar é uma imagem k9 (criptografia).
Componentes Utilizados
A informação neste documento é baseada no software do Cisco IOS 3600 (C3640-IK9S-M), a liberação 12.2(2)T1.
O SSH foi introduzido nestas plataformas do Cisco IOS e imagens:
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Diagrama de rede SSH v2

Autenticação de teste
Teste da autenticação sem SSH
Teste primeiramente a autenticação sem SSH para certificar-se de que a autenticação trabalha com o roteador Carter antes que você adicione o SSH. A autenticação pode ser com um nome de usuário e uma senha locais ou com um servidor de autenticação, autorização e contabilização (AAA) que executa o TACACS+ ou RADIUS. (A autenticação por meio da senha de linha não é possível com o SSH.) Este exemplo mostra a autenticação local, que permite executar o Telnet no roteador com o nome de usuário cisco e a senha cisco.
Note: Em todo este documento, vty é usado para indicar o Tipo de Terminal Virtual.
!--- The aaa new-model command causes the local username and password on the router to be used in the absence of other AAA statements.
aaa new-model
username cisco password 0 cisco
line vty 0 4
transport input telnet
!--- Instead of aaa new-model, you can use the login local command.
Teste da autenticação com SSH
Para testar a autenticação com o SSH, você precisa adicionar às instruções anteriores para ativar o SSH no Carter e testar o SSH nas estações PC e UNIX.
ip domain-name rtp.cisco.com
!--- Generate an SSH key to be used with SSH.
crypto key generate rsa
ip ssh time-out 60
ip ssh authentication-retries 2
Neste momento, o comando show crypto key mypubkey rsa deve mostrar a chave gerada. Depois que você adiciona a configuração SSH, teste sua capacidade para acessar o roteador do PC e da estação Unix.
Conjuntos de configurações opcionais
Previna conexões não-SSH
Se você quer prevenir conexões não-SSH, adicione o comando transport input ssh sob as linhas limitar o roteador somente às conexões de SSH. Telnets (não-SSH) diretos são recusados.
line vty 0 4
!--- Prevent non-SSH Telnets.
transport input ssh
Teste para garantir que usuários não SSH não possam executar o Telnet no Carter do roteador.
Configurar um roteador ou switch Cisco IOS como cliente SSH
Há quatro etapas exigidas para permitir o apoio SSH em um roteador do Cisco IOS:
1. Configure o comando hostname.
2. Configure o domínio DNS.
3. Gere a chave SSH.
4. Ative o suporte ao transporte SSH do vty.
Se você quer mandar um dispositivo atuar como um cliente SSH ao outro, você pode adicionar o SSH a um segundo dispositivo chamado Reed. Isso coloca esses dispositivos em uma disposição de cliente-servidor, em que Carter atua como o servidor, e Reed atua como o cliente. A configuração do cliente SSH do Cisco IOS em Reed é a mesma como necessário para a configuração do servidor SSH em Carter.
!--- Step 1: Configure the hostname if you have not previously done so.
hostname carter
!--- The aaa new-model command causes the local username and password on the router to be used in the absence of other AAA statements.
aaa new-model
username cisco password 0 cisco
!--- Step 2: Configure the DNS domain of the router.
ip domain-name rtp.cisco.com
!--- Step 3: Generate an SSH key to be used with SSH.
crypto key generate rsa
ip ssh time-out 60
ip ssh authentication-retries 2
!--- Step 4: By default the vty transport is Telnet. In this case, Telnet is disabled and only SSH is supported.
line vty 0 4
transport input ssh
!--- Instead of aaa new-model, you can use the login local command.
Emita este comando para o SSH, do cliente SSH do Cisco IOS (Reed) para o servidor SSH do Cisco IOS (Carter), para testar o seguinte:
ssh -v 2 -c aes256-cbc -m hmac-sha1-160 -l cisco 10.31.1.99
Configurar um roteador Cisco IOS como um servidor SSH que executa autenticação de usuário baseada em RSA
Siga estas etapas para configurar o servidor SSH para executar a autenticação de RSA.
1. Especifique o nome de host.
Router(config)#hostname
2. Defina o nome de domínio padrão.
Router(config)#ip domain-name
3. Gere pares de chaves RSA.
Router(config)#crypto key generate rsa
4. Configure as chaves SSH-RSA para autenticação de usuário e servidor.
Router(config)#ip ssh pubkey-chain
5. Configure o nome do usuário SSH.
Router(conf-ssh-pubkey)#username
6. Especifique a chave pública RSA do par remoto.
Router(conf-ssh-pubkey-user)#key-string
7. Especifique o tipo e a versão da chave SSH. (Essa etapa é opcional.)
Router(conf-ssh-pubkey-data)#key-hash ssh-rsa
8. Saia do modo atual e retorne ao modo EXEC com privilégios.
Router(conf-ssh-pubkey-data)#end
Adicionar o acesso de linha terminal SSH
Se você precisa a autenticação de linha terminal SSH de saída, você pode configurar e testar o SSH para Telnets reverso de partida através de Carter, que actua como um servidor comm para Philly.
ip ssh port 2001 rotary 1
line 1 16
no exec
rotary 1
transport input ssh
exec-timeout 0 0
modem InOut
stopbits 1
Se o Philly estiver conectado à Porta 2 do Carter, você poderá configurar o SSH para o Philly por meio do Carter no Reed com este comando:
ssh -v 2 -c aes256-cbc -m hmac-shal-160 -p 2002 10.31.1.99
Você pode usar este comando do Solaris:
ssh -c 3des -p 2002 -x -v 10.13.1.99
Restrinja o acesso SSH a uma sub-rede
Você precisa limitar a conectividade SSH a uma sub-rede específica, em que todas as outras tentativas de SSH dos IPs fora da sub-rede são descartadas.
Você pode usar estas etapas para fazer o mesmo:
- Defina uma lista de acesso que permita o tráfego dessa sub-rede específica.
- Restrinja o acesso à interface de linha VTY com um acesso-classe.
Este é um exemplo de configuração. Neste exemplo, apenas o acesso SSH à sub-rede 10.10.10.0 255.255.255.0 é permitido; outro acesso será negado.
Router(config)#access-list 23 permit 10.10.10.0 0.0.0.255
Router(config)#line vty 5 15
Router(config-line)#transport input ssh
Router(config-line)#access-class 23 in
Router(config-line)#exit
Note: O mesmo procedimento para bloquear o acesso SSH também é usado para plataformas de switch.
Configurar o SSH versão 2
carter(config)#ip ssh version 2
Variações na saída do comando da bandeira
A saída do comando banner varia entre o Telnet e diferentes versões das conexões de SSH. Esta tabela ilustra como diferentes opções de comando do bannerfuncionam com vários tipos de conexões.
Opções de comando de banner
|
Telnet
|
SSH v2
|
registro de banner
|
Exibido antes de fazer login no dispositivo.
|
Exibido antes de fazer login no dispositivo.
|
banner motd
|
Exibido antes de fazer login no dispositivo.
|
Exibido após fazer login no dispositivo.
|
banner exec
|
Exibido após fazer login no dispositivo.
|
Exibido após fazer login no dispositivo.
|
Note: A versão 1 do SSH não é mais recomendada.
Não é possível exibir o banner de login
O SSH versão 2 é compatível com o banner de login. Ao iniciar a sessão SSH com o roteador Cisco, o banner de login será exibido se o cliente SSH enviar o nome de usuário. Por exemplo, quando o cliente SSH do Secure Shell é usado, o banner de login é exibido. Quando o cliente SSH do PuTTY é usado, o banner de login não é exibido. Isso ocorre porque o SSH envia o nome de usuário por padrão e o PuTTY não envia o nome de usuário por padrão.
O cliente SSH precisa do nome de usuário para iniciar a conexão com o dispositivo compatível com SSH. O botão connect não está habilitado se você não digitar o nome de host e nome de usuário. Esta captura de tela mostra que o banner de login é exibido quando o SSH se conecta ao roteador. O banner solicitará uma senha.
Prompts de banner para uma senha
O cliente PuTTY não requer o nome de usuário para iniciar a conexão SSH ao roteador. Esta imagem da tela mostra que o cliente PuTTY se conecta ao roteador e solicita o nome de usuário e a senha. Ela não exibe o banner de login.
Conexão SSH com o roteador
Esta captura de tela mostra que o banner de login é exibido quando PuTTY é configurado para enviar o nome de usuário ao roteador.
Enviar nome de usuário para o roteador
comandos debug e show
Antes de emitir os comandos debug descritos aqui, consulte Informações importantes sobre os comandos debug. Alguns comandos show são compatíveis com a ferramenta Interpretador Externo (registrada somente para clientes), que permite visualizar uma análise da saída do comando show.
carter#show ssh
Connection Version Encryption State Username
0 2.0 DES Session started cisco
carter#show ip ssh
SSH Enabled - version 2.0
Authentication timeout: 120 secs; Authentication retries: 3
Exemplo de saída de depuração
Debug de Roteador
00:23:20: SSH0: starting SSH control process
00:23:20: SSH0: sent protocol version id SSH-2.0-Cisco-1.25
00:23:20: SSH0: protocol version id is - SSH-2.0-1.2.26
00:23:20: SSH0: SSH_SMSG_PUBLIC_KEY msg
00:23:21: SSH0: SSH_CMSG_SESSION_KEY msg - length 112, type 0x03
00:23:21: SSH: RSA decrypt started
00:23:21: SSH: RSA decrypt finished
00:23:21: SSH: RSA decrypt started
00:23:21: SSH: RSA decrypt finished
00:23:21: SSH0: sending encryption confirmation
00:23:21: SSH0: keys exchanged and encryption on
00:23:21: SSH0: SSH_CMSG_USER message received
00:23:21: SSH0: authentication request for userid cisco
00:23:21: SSH0: SSH_SMSG_FAILURE message sent
00:23:23: SSH0: SSH_CMSG_AUTH_PASSWORD message received
00:23:23: SSH0: authentication successful for cisco
00:23:23: SSH0: requesting TTY
00:23:23: SSH0: setting TTY - requested: length 24, width 80; set:
length 24, width 80
00:23:23: SSH0: invalid request - 0x22
00:23:23: SSH0: SSH_CMSG_EXEC_SHELL message received
00:23:23: SSH0: starting shell for vty
Depuração do servidor
Note: Esta é a saída da máquina Solaris.
rtp-evergreen.rtp.cisco.com#ssh -c 3des -l cisco -v 10.31.1.99
rtp-evergreen#/opt/CISssh/bin/ssh -c 3des -l cisco -v 10.13.1.99
SSH Version 1.2.26 [sparc-sun-solaris2.5.1], protocol version 1.5.
Compiled with RSAREF.
rtp-evergreen: Reading configuration data /opt/CISssh/etc/ssh_config
rtp-evergreen: ssh_connect: getuid 0 geteuid 0 anon 0
rtp-evergreen: Allocated local port 1023.
rtp-evergreen: Connecting to 10.13.1.99 port 22.
rtp-evergreen: Connection established.
rtp-evergreen: Remote protocol version 2.0,
remote software version Cisco-1.25
rtp-evergreen: Waiting for server public key.
rtp-evergreen: Received server public key (768 bits)
and host key (512 bits).
rtp-evergreen: Host '10.13.1.99' is known and matches the host key.
rtp-evergreen: Initializing random; seed file //.ssh/random_seed
rtp-evergreen: Encryption type: 3des
rtp-evergreen: Sent encrypted session key.
rtp-evergreen: Installing crc compensation attack detector.
rtp-evergreen: Received encrypted confirmation.
rtp-evergreen: Doing password authentication.
cisco@10.13.1.99's password:
rtp-evergreen: Requesting pty.
rtp-evergreen: Failed to get local xauth data.
rtp-evergreen: Requesting X11 forwarding with authentication spoofing.
Warning: Remote host denied X11 forwarding, perhaps xauth program
could not be run on the server side.
rtp-evergreen: Requesting shell.
rtp-evergreen: Entering interactive session.
Configurações incorretas
Estas seções têm o exemplo de debug de diversas configurações incorretas.
SSH de um cliente SSH não compilado com padrão de criptografia de dados (DES)
Senha incorreta
Debug de Roteador
00:26:51: SSH0: starting SSH control process
00:26:51: SSH0: sent protocol version id SSH-2.0-Cisco-1.25
00:26:52: SSH0: protocol version id is - SSH-2.0-1.2.26
00:26:52: SSH0: SSH_SMSG_PUBLIC_KEY msg
00:26:52: SSH0: SSH_CMSG_SESSION_KEY msg - length 112, type 0x03
00:26:52: SSH: RSA decrypt started
00:26:52: SSH: RSA decrypt finished
00:26:52: SSH: RSA decrypt started
00:26:52: SSH: RSA decrypt finished
00:26:52: SSH0: sending encryption confirmation
00:26:52: SSH0: keys exchanged and encryption on
00:26:52: SSH0: SSH_CMSG_USER message received
00:26:52: SSH0: authentication request for userid cisco
00:26:52: SSH0: SSH_SMSG_FAILURE message sent
00:26:54: SSH0: SSH_CMSG_AUTH_PASSWORD message received
00:26:54: SSH0: password authentication failed for cisco
00:26:54: SSH0: SSH_SMSG_FAILURE message sent
00:26:54: SSH0: authentication failed for cisco (code=7)
00:26:54: SSH0: Session disconnected - error 0x07
O cliente SSH envia a cifra não suportada (Blowfish)
Debug de Roteador
00:39:26: SSH0: starting SSH control process
00:39:26: SSH0: sent protocol version id SSH-2.0-Cisco-1.25
00:39:26: SSH0: protocol version id is - SSH-2.0-W1.0
00:39:26: SSH0: SSH_SMSG_PUBLIC_KEY msg
00:39:26: SSH0: SSH_CMSG_SESSION_KEY msg - length 112, type 0x03
00:39:26: SSH0: Session disconnected - error 0x20
Obter "%SSH-3-PRIVATEKEY: Incapaz de recuperar a chave privada RSA para o” erro
Uma alteração no nome de domínio ou no nome de host pode acionar essa mensagem de erro. Use estas soluções alternativas:
crypto key zeroize rsa label key_name
crypto key generate rsa label key_name modulus key_size
Dicas
-
Se seus comandos de configuração SSH são rejeitados como comandos ilegais, você não gerou com sucesso um par de chaves RSA para seu roteador. Verifique se você especificou um nome de host e um domínio. Em seguida, use o comando crypto key generate rsa para gerar pares de chaves RSA e ativar o servidor SSH.
-
Ao configurar os pares de chaves RSA, você pode obter estas mensagens de erro:
-
"Nenhum nome de host especificado".
Use o comando de configuração global hostname para configurar um nome de host para o roteador.
-
"Nenhum domínio especificado".
Use o comando de configuração global ip domain-name para configurar um domínio de host para o roteador.
-
O número de conexões SSH permitidas é limitado ao número máximo de conexões vty
configuradas para o roteador. Cada conexão SSH usa um vty
recurso.
-
O SSH usa a segurança local ou o protocolo de segurança configurado por meio de AAA no roteador para autenticação do usuário. Ao configurar o AAA, você deve garantir que o console não seja executado no AAA. Aplique uma palavra-chave no modo de configuração global para desativar o AAA no console.
-
No SSH server connections running:
carter#show ssh
%No SSHv2 server connections running.
Esta saída sugere que o servidor de SSH seja desabilitado ou não habilitado corretamente. Se você já configurou o SSH, recomenda-se que você reconfigure o servidor de SSH no dispositivo. Siga estas etapas para reconfigurar o servidor SSH no dispositivo.
- Exclua os pares de chaves RSA. Depois que os pares de chaves RSA são excluídos, o servidor SSH é desativado automaticamente.
carter(config)#crypto key zeroize rsa
Note: É importante gerar pares de chaves com pelo menos 768 como tamanho de bit quando você habilita SSH v2.
Caution: Esse comando não pode ser desfeito depois que você salvar sua configuração. Além disso, após a exclusão das chaves RSA, você não pode usar certificados ou a CA nem participar de trocas de certificados com outros pares de segurança IP (IPSec), a menos que gere novamente as chaves RSA para reconfigurar a interoperabilidade de CA, obter o certificado de CA e solicitar seu próprio certificado novamente.
2. Reconfigure o nome de host e o nome de domínio do dispositivo.
carter(config)#hostname hostname
carter(config)#ip domain-name domainname
3.Gere os pares de chaves RSA para o roteador. Isso ativa o SSH automaticamente.
carter(config)#crypto key generate rsa
Note: Refira a crypto key generate rsa - Cisco IOS Security Command Reference, Release 12.3 para obter mais informações sobre o uso deste comando.
Note: Você pode receber o comando "SSH2 0: Mensagem de erro de tipo de mensagem inesperado recebido" devido a um pacote recebido que não é compreensível para o roteador. Aumente o comprimento da chave quando você gerar chaves RSA para o ssh a fim resolver este problema.
4. Configure o servidor SSH.
5. Para ativar e configurar um roteador/switch Cisco para o servidor SSH, configure os parâmetros SSH. Se você não configurar parâmetros SSH, os valores padrão serão usados.
ip ssh {[timeout seconds] | [authentication-retries integer]}
carter(config)# ip ssh
Informações Relacionadas