목차

소개

사전 요구 사항

요구 사항

사용되는 구성 요소

설치된 패키지 확인

설정

생성된 키 식별

SSH 서버 기능 식별

호스트 SSH 기능 식별

PuTTY

Linux

SSH 연결 문제 해결

SSH 키 재설정 값 구성

SSH 디버그

추가 로그

소개

이 문서에서는 NCS1K 플랫폼의 SSH(Secure Shell)에 대한 기본적인 트러블슈팅 사례에 대해 설명합니다.

사전 요구 사항

이 문서에서는 NCS(Network Convergence System) 1002와 같은 디바이스에서 XR 기반 운영 체제에 대한 숙련된 기능을 전제로 합니다.

요구 사항

Cisco에서는 SSH 연결 요구 사항에 대한 다음 항목에 대해 알고 있는 것이 좋습니다.

- XR 이미지에 대한 관련 k9sec 패키지

- Cisco 디바이스에 있는 SSH 컨피그레이션

- 호스트와 서버 간의 성공적인 키 생성, 키 교환 및 암호 협상

사용되는 구성 요소

이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.

- NCS1002 및 XR 7.3.1

- NCS1004 및 XR 7.9.1

이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.

설치된 패키지 확인

명령 show install active 및 show install committed k9sec 패키지가 있는지 확인합니다. 이 패키지를 설치하지 않으면 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

설정

최소한 NCS1K는 ssh server v2 SSH 연결을 허용합니다. 입력 사항 show run ssh 이 컨피그레이션을 사용하려면

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

생성된 키 식별

SSH 세션을 설정하려면 NCS1K에 공개 암호화 키가 있어야 합니다. 생성된 키의 존재 확인 show crypto key mypubkey { dsa | ecdsa | ed25519 | rsa }. 기본 키 유형은 rsa. 키는 16진수 문자열로 표시되며, 보안을 위해 여기에 생략됩니다.

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>

특정 유형의 키를 생성하려면 명령을 입력합니다 crypto key generate { dsa | ecdsa | ed25519 | rsa }  키 모듈러스를 선택합니다. 모듈러스 크기는 알고리즘에 따라 다릅니다.

키 유형

허용되는 모듈러스/커브 유형

기본 모듈러스 길이(비트)

DSA

512, 768, 1024

1024

ecdsa

nistp256, nistp384, nistp521

none

ed25519

256

256

rsa

512~4096

2048

키가 성공적으로 생성되었는지 확인합니다. show crypto key mypubkey.

기존 키를 제거하려면 명령을 입력합니다 crypto key zeroize { authentication | dsa | ecdsa | ed25519 | rsa } [ label ]. 암호화 키가 없는 디바이스에서 연결을 해제하면 SSH로 액세스가 차단되므로 다른 방법을 통해 디바이스에 액세스할 수 있어야 합니다.

SSH 서버 기능 식별

SSH 세션을 설정하기 전에 서버와 호스트가 키 교환, 호스트 키 및 암호에 동의해야 합니다. NCS1K 플랫폼의 기능을 식별하려면 명령을 입력합니다 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)

호스트 SSH 기능 식별

SSH 세션을 설정하려면 연결을 시도하는 호스트가 서버의 호스트 키, 키 교환 및 암호화 알고리즘을 하나 이상 일치해야 합니다.

PuTTY

PuTTY는에서 지원되는 키 교환, 호스트 키 및 암호 알고리즘을 나열합니다. Connections > SSH. 호스트는 기능을 기반으로 사용자 환경 설정 순서대로 키 교환 알고리즘을 선호하여 알고리즘을 자동으로 협상합니다. 옵션 Attempt GSSAPI key exchange 는 NCS1K 디바이스에 연결하는 데 필요하지 않습니다.

PuTTY SSH 옵션의 스크린샷

Linux

Linux 서버는 일반적으로 지원되는 알고리즘을 /etc/ssh/ssh_config 파일을 클릭합니다. 이 예는 Ubuntu Server 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

SSH 연결 문제 해결

이러한 명령은 SSH 연결에서 오류를 격리하는 데 도움이 될 수 있습니다.

를 사용하여 현재 수신 및 발신 SSH 세션 보기 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

기록 SSH 세션에는 명령을 사용한 실패한 연결 시도가 포함됩니다 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

SSH 추적은 와의 연결 프로세스에 대한 세부 정보 레벨을 제공합니다. 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

SSH 키 재설정 값 구성

SSH 키 재지정 컨피그레이션은 새 키 교환이 발생하기 전의 시간 및 바이트 수를 결정합니다. 다음을 사용하여 현재 값을 확인합니다. 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

키 재설정 볼륨을 설정하려면 명령을 사용합니다 ssh server rekey-volume [ size ]. 기본 키 재설정 크기는 1024MB입니다.

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

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

마찬가지로 키 재설정 타이머 값을 ssh server rekey-time [ time ]. 기본값은 60분입니다.

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

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

SSH 디버그

이 debug ssh server  이 명령은 활성 SSH 세션 및 연결 시도에 대한 실시간 출력을 표시합니다. 오류가 발생한 연결을 트러블슈팅하려면 디버그를 활성화하고 연결을 시도한 다음 undebug all. 분석을 위해 PuTTY 또는 다른 터미널 애플리케이션을 사용하여 세션을 로깅합니다.

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

PuTTY에는 SSH 패킷 로깅 기능이 포함되어 있습니다. Session > Logging.

PuTTY SSH 로깅 스크린샷

Linux에서는 ssh -vv (매우 자세한 정보) SSH 연결 프로세스에 대한 자세한 정보를 제공합니다.

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

추가 로그

몇 가지 show techs는 SSH에서 유용한 정보를 캡처합니다.

- show tech { ncs1k | ncs1001 | ncs1004 } detail

- show tech crypto session

- show tech ssh

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