Contents

Introdução

Pré-requisitos

Requisitos

Componentes Utilizados

Verificar pacotes instalados

Configuração

Identificar chaves geradas

Identificar recursos do servidor SSH

Identificar os recursos do SSH do host

PuTTY

Linux

Solucionar problemas de conexões SSH

Configurar os valores da nova chave do SSH

Depuração SSH

Logs adicionais

Introdução

Este documento descreve práticas básicas de Troubleshooting para Secure Shell (SSH) na plataforma NCS1K.

Pré-requisitos

Este documento assume proficiência com sistemas operacionais baseados em XR em dispositivos como o Network Convergence System (NCS) 1002.

Requisitos

A Cisco recomenda que você tenha conhecimento destes tópicos para os requisitos de conexão SSH:

- O pacote k9sec relevante para a imagem XR

- Configuração SSH presente no dispositivo Cisco

- Uma geração de chave bem-sucedida, troca de chave e negociação de codificação entre o host e o servidor

Componentes Utilizados

As informações neste documento são baseadas nestas versões de software e hardware:

- NCS1002 com XR 7.3.1

- NCS1004 com XR 7.9.1

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.

Verificar pacotes instalados

Os comandos show install active e show install committed identifique a presença do pacote k9sec. Sem este pacote instalado, você não pode gerar chaves de criptografia para iniciar uma sessão SSH.

RP/0/RP0/CPU0:NCS1002_1# show install active

Wed Jul 19 09:31:18.977 UTC

Label : 7.3.1

Node 0/RP0/CPU0 [RP]

Boot Partition: xr_lv58

Active Packages: 4

ncs1k-xr-7.3.1 version=7.3.1 [Boot image]

ncs1k-mpls-te-rsvp-3.1.0.0-r731

ncs1k-mpls-2.1.0.0-r731

ncs1k-k9sec-3.1.0.0-r731

RP/0/RP0/CPU0:NCS1002_1# show install committed

Wed Jul 19 09:31:37.359 UTC

Label : 7.3.1

Node 0/RP0/CPU0 [RP]

Boot Partition: xr_lv58

Committed Packages: 4

ncs1k-xr-7.3.1 version=7.3.1 [Boot image]

ncs1k-mpls-te-rsvp-3.1.0.0-r731

ncs1k-mpls-2.1.0.0-r731

ncs1k-k9sec-3.1.0.0-r731

Configuração

No mínimo, o NCS1K requer a configuração ssh server v2 para permitir conexões SSH. Enter show run ssh para garantir que essa configuração esteja presente:

RP/0/RP0/CPU0:NCS1004_1# show run ssh

Wed Jul 19 13:06:57.207 CDT

ssh server rate-limit 600

ssh server v2

ssh server netconf vrf default

Identificar chaves geradas

Para estabelecer uma sessão SSH, o NCS1K deve ter uma chave criptográfica pública presente. Identificar a presença de chaves geradas com show crypto key mypubkey { dsa | ecdsa | ed25519 | rsa }. O tipo de chave padrão é rsa. A chave aparece como uma string hexadecimal, omitida aqui para fins de segurança.

RP/0/RP0/CPU0:NCS1002_1# show crypto key mypubkey rsa

Wed Jul 19 10:30:09.333 UTC

Key label: the_default

Type : RSA General purpose

Size : 2048

Created : 11:59:56 UTC Tue Aug 23 2022

Data : <key>

Para gerar uma chave de um tipo específico, insira o comando crypto key generate { dsa | ecdsa | ed25519 | rsa }  e escolha um módulo de chave. O tamanho do módulo varia de acordo com o algoritmo.

Tipo de chave

Tipos de módulo/curva permitidos

Comprimento padrão do módulo (bits)

dsa

512, 768, 1024

1024

ecdsa

nistp256, nistp384, nistp521

nenhum

ad25519

256

256

rsa

512 a 4096

2048

Verifique se a chave foi gerada com êxito com show crypto key mypubkey.

Para remover uma chave existente, insira o comando crypto key zeroize { authentication | dsa | ecdsa | ed25519 | rsa } [ label ]. Certifique-se de que você tenha acesso ao dispositivo por outros meios como a desconexão de um dispositivo sem chaves de criptografia bloqueia o acesso com SSH.

Identificar recursos do servidor SSH

O servidor e o host devem concordar com uma troca de chave, chave de host e codificação antes de estabelecer uma sessão SSH. Para identificar os recursos da plataforma NCS1K, insira o comando show ssh server.

RP/0/RP0/CPU0:NCS1004_1# show ssh server

Wed Jul 19 13:28:04.820 CDT

---------------------

SSH Server Parameters

---------------------

Current supported versions := v2

SSH port := 22

SSH vrfs := vrfname:=default(v4-acl:=, v6-acl:=)

Netconf Port := 830

Netconf Vrfs := vrfname:=default(v4-acl:=, v6-acl:=)

Algorithms

---------------

Hostkey Algorithms := x509v3-ssh-rsa,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384,ecdsa-sha2-nistp256,rsa-sha2-512,rsa-sha2-256,ssh-rsa,ssh-dsa,ssh-ed25519

Key-Exchange Algorithms := ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha1,curve25519-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,curve25519-sha256@libssh.org

Encryption Algorithms := aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com

Mac Algorithms := hmac-sha2-512,hmac-sha2-256,hmac-sha1

Authentication Method Supported

------------------------------------

PublicKey := Yes

Password := Yes

Keyboard-Interactive := Yes

Certificate Based := Yes

Others

------------

DSCP := 16

Ratelimit := 600

Sessionlimit := 64

Rekeytime := 60

Server rekeyvolume := 1024

TCP window scale factor := 1

Backup Server := Disabled

Host Trustpoint :=

User Trustpoint :=

Port Forwarding := Disabled

Max Authentication Limit := 20

Certificate username := Common name(CN)

Identificar os recursos do SSH do host

O host que está tentando se conectar deve corresponder a pelo menos uma chave de host, troca de chave e algoritmo de criptografia do servidor para estabelecer uma sessão SSH.

PuTTY

O PuTTY lista a troca de chaves suportada, a chave de host e os algoritmos de cifra sob Connections > SSH. O host negocia automaticamente os algoritmos com base em suas capacidades, preferindo o algoritmo de troca de chave na ordem de preferência do usuário. A opção Attempt GSSAPI key exchange não é necessário para se conectar a um dispositivo NCS1K.

Captura de tela das opções PuTTY SSH

Linux

Os servidores Linux normalmente mantêm os algoritmos suportados no /etc/ssh/ssh_config arquivo. Este exemplo se origina do servidor Ubuntu 18.04.3.

Host *

# ForwardAgent no

# ForwardX11 no

# ForwardX11Trusted yes

# PasswordAuthentication yes

# HostbasedAuthentication no

# GSSAPIAuthentication no

# GSSAPIDelegateCredentials no

# GSSAPIKeyExchange no

# GSSAPITrustDNS no

# BatchMode no

# CheckHostIP yes

# AddressFamily any

# ConnectTimeout 0

# StrictHostKeyChecking ask

# IdentityFile ~/.ssh/id_rsa

# IdentityFile ~/.ssh/id_dsa

# IdentityFile ~/.ssh/id_ecdsa

# IdentityFile ~/.ssh/id_ed25519

# Port 22

# Protocol 2

# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc

# MACs hmac-md5,hmac-sha1,umac-64@openssh.com

# EscapeChar ~

# Tunnel no

# TunnelDevice any:any

# PermitLocalCommand no

# VisualHostKey no

# ProxyCommand ssh -q -W %h:%p gateway.example.com

# RekeyLimit 1G 1h

SendEnv LANG LC_*

HashKnownHosts yes

GSSAPIAuthentication yes

Solucionar problemas de conexões SSH

Esses comandos podem ajudar a isolar falhas com conexões SSH.

Consulte as sessões SSH atuais de entrada e saída com show ssh session details.

RP/0/RP0/CPU0:NCS1002_1# show ssh session details

Wed Jul 19 13:08:46.147 UTC

SSH version : Cisco-2.0

id key-exchange pubkey incipher outcipher inmac outmac

----------------------------------------------------------------------------------------------------

Incoming Sessions

128733 ecdh-sha2-nistp256 ssh-rsa aes256-ctr aes256-ctr hmac-sha2-256 hmac-sha2-256

128986 diffie-hellman-group14 ssh-rsa aes128-ctr aes128-ctr hmac-sha1 hmac-sha1

128988 diffie-hellman-group14 ssh-rsa aes128-ctr aes128-ctr hmac-sha1 hmac-sha1

Outgoing sessions

As sessões SSH históricas incluem tentativas de conexão com o comando show ssh history detail.

RP/0/RP0/CPU0:NCS1002_1# show ssh history details

Wed Jul 19 13:13:26.821 UTC

SSH version : Cisco-2.0

id key-exchange pubkey incipher outcipher inmac outmac start_time end_time

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Incoming Session

128869diffie-hellman-group14-sha1ssh-rsa aes128-ctr aes128-ctr hmac-sha1 hmac-sha1 19-07-23 11:28:55 19-07-23 11:30:07

Os rastreamentos SSH fornecem um nível fino de detalhes sobre o processo de conexão com show ssh trace all.

RP/0/RP0/CPU0:NCS1002_1# show ssh trace all

Wed Jul 19 13:15:53.701 UTC

3986 wrapping entries (57920 possible, 40896 allocated, 0 filtered, 392083 total)

Apr 29 19:13:19.438 ssh/backup-server/event 0/RP0/CPU0 t6478 [SId:=0] Respawn-count:=1, Starting SSH Server

Apr 29 19:13:19.438 ssh/backup-server/shmem 0/RP0/CPU0 t6478 [SId:=0] Shared memory does not exist during server start

Configurar os valores da nova chave do SSH

A configuração de rechaveamento SSH determina o tempo e o número de bytes antes que ocorra uma nova troca de chave. Ver os valores atuais usando show ssh rekey.

RP/0/RP0/CPU0:NCS1004_1# show ssh rekey

Wed Jul 19 15:23:06.379 CDT

SSH version : Cisco-2.0

id RekeyCount TimeToRekey(min) VolumeToRekey(MB)

----------------------------------------------------------

Incoming Session

1015      6      6.4              1024.0

1016      0      58.8             1024.0

Outgoing sessions

Para definir o volume de rechaveamento, use o comando ssh server rekey-volume [ size ]. O tamanho padrão da nova chave é 1024 MB.

RP/0/RP0/CPU0:NCS1004_1(config)# ssh server rekey-volume 4095

RP/0/RP0/CPU0:NCS1004_1(config)# commit

Da mesma forma, defina o valor do temporizador de rechaveamento com ssh server rekey-time [ time ]. O valor padrão é 60 minutos.

RP/0/RP0/CPU0:NCS1004_1(config)# ssh server rekey-time 120

RP/0/RP0/CPU0:NCS1004_1(config)# commit

Depuração SSH

O debug ssh server  exibe saídas em tempo real para sessões SSH ativas e tentativas de conexão. Para solucionar problemas de uma conexão com falha, habilite a depuração, tente a conexão e interrompa a depuração com undebug all. Registre a sessão usando PuTTY ou outro aplicativo de terminal para análise.

RP/0/RP0/CPU0:NCS1002_1# debug ssh server

O PuTTY inclui um recurso para registrar pacotes SSH em Session > Logging.

Captura de tela do registro PuTTY SSH

No Linux, ssh -vv (muito detalhado) fornece informações detalhadas sobre o processo de conexão SSH.

ubuntu-18@admin:/$ ssh -vv admin@192.168.190.2

Logs adicionais

Vários técnicos de exibição capturam informações úteis no SSH.

- show tech { ncs1k | ncs1001 | ncs1004 } detail

- show tech crypto session

- show tech ssh

- admin show tech { ncs1k | ncs1001 | ncs1004 }-admin