본문 바로가기
네트워크/기초 학습

Cisco 장비 SSH 원격 접속 실습

by CBROJIN 2025. 8. 10.

1. 이론 학습

[SSH 접속에서의 Diffie-Hellman(DH)와 대칭 암호의 관계]

1) 전체 흐름 개요

SSH에서 안전한 통신을 만들기 위해서는 다음 4가지 요소가 단계적으로 동작합니다.

  1. 서버 인증 – 서버가 진짜인지 확인 (RSA 등 공개키 암호)
  2. 키 교환 알고리즘(DH) – 세션 대칭 키 생성
  3. 대칭 암호(AES, 3DES) – 세션 키로 데이터 암호화
  4. 무결성 검증(MAC) – 데이터 변조 여부 확인

2) 단계별 상세 설명

(1) 서버 인증 (RSA)

  • 역할: 서버가 진짜임을 클라이언트에 증명
  • 방법: 서버가 DH 과정에서 만든 공개값과 관련 데이터를 RSA 개인키로 서명 → 클라이언트가 서버의 RSA 공개키로 검증
  • 이유: 중간자 공격 방지

(2) 키 교환 알고리즘 – Diffie-Hellman(DH)

  • 목적: 대칭 암호에서 사용할 세션 대칭 키를 안전하게 생성
  • 동작 방식:
    1. 서버와 클라이언트가 각각 비밀값을 생성
    2. 비밀값으로 계산한 공개값만 서로 전송 (이 값은 도청되어도 안전)
    3. 서로 받은 공개값과 자기 비밀값을 이용해 같은 세션 키 계산
    4. 세션 키는 네트워크로 전송되지 않음
  • 이유: 세션 키를 직접 주고받지 않기 때문에 도청자가 키를 알 수 없음

(3) 대칭 암호 (AES, 3DES 등)

  • 역할: 실제 명령, 비밀번호, 출력 결과 등을 빠르고 안전하게 암호화
  • 세션 키 사용: DH로 만든 세션 키를 대칭 암호 알고리즘의 암호화 키로 사용
  • 특징: 대칭 암호는 연산이 빠르기 때문에 실시간 통신에 적합

(4) 무결성 검증 (MAC – HMAC-SHA1 등)

  • 역할: 데이터가 전송 중 변조되지 않았는지 확인
  • 방법: 데이터와 세션 키를 이용해 해시값을 생성, 수신 측에서 같은 계산을 해서 비교
  • 효과: 변조되면 해시값이 달라져서 즉시 탐지 가능

3) 간단한 비유

  • RSA = 건물 경비원 (서버 신원 확인)
  • DH = 양쪽이 비밀리에 열쇠(세션 키)를 만드는 과정
  • 세션 키 = 자물쇠 열쇠
  • AES/3DES = 자물쇠 (데이터 암호화/복호화)
  • MAC = 봉인 스티커 (변조 여부 확인)

4) SSH 접속 절차 요약

  1. 버전 교환 – SSH 프로토콜 버전 확인
  2. KEXINIT 교환 – 서로 지원하는 알고리즘 후보 전송
  3. 알고리즘 확정 – 키 교환(DH), 서버 인증(RSA), 대칭 암호(AES), MAC 방식 선택
  4. 키 교환(DH) – 세션 키 생성 (공개값 주고받기 + 서버 RSA 서명)
  5. 서명 검증 – 서버 공개키로 서명 검증 → 서버 신원 확정
  6. 대칭 암호화 시작 – DH 세션 키 + 선택된 대칭 암호로 모든 데이터 암호화
  7. MAC 적용 – 패킷 무결성 검증

5) 핵심 포인트

  • DH는 세션 키 생성을 위한 알고리즘, 대칭 암호는 세션 키를 사용하는 암호화 방식
  • 세션 키는 절대 네트워크로 전송되지 않고, 양쪽이 계산으로 동일한 값을 만든다
  • 서버 인증은 DH 과정 속에서 RSA 서명을 검증하는 방식으로 수행

 

 

2. 이론 실습

1단계: SSH 지원 여부 확인

R1# show ip ssh

  개념 설명:

  • 이 명령어는 장비에 SSH 서버 기능이 지원되는지를 확인함
  • 출력이 안 되면 현재 IOS 버전이 암호화 기능(crypto package)을 포함하지 않은 비암호화 버전일 수 있음 (예: "IP Base" 이미지는 SSH 미지원 가능성 있음)
  • SSH가 활성화된 경우, 지원 버전, 타임아웃 시간, 인증 재시도 횟수 등을 출력함

2단계: 도메인 이름 설정

R1(config)# ip domain-name example.com

  개념 설명:

  • RSA 키 생성 시 내부적으로 호스트 이름과 도메인 이름을 조합해서 키 이름을 만듦
  • 예: hostname이 R1, domain-name이 example.com이면 → 키 이름은 R1.example.com
  • 도메인 이름이 없으면 RSA 키 생성이 실패하거나 메시지가 뜸

Q1. RSA 키가 뭔데?

RSA는 공개 키 암호화 알고리즘의 한 종류
1977년에 Rivest, Shamir, Adleman이 만든 거라서 R-S-A라는 이름을 갖고 있다.

특징:

  • 키가 두 개: 공개 키(public key)와 개인 키(private key).
  • 공개 키로 암호화한 건 개인 키로만 복호화 가능, 반대로 개인 키로 암호화한 건 공개 키로만 복호화 가능.

네트워크에서는 데이터를 안전하게 교환하거나, 상대방의 신원 확인(인증)하는 데 많이 쓰인다.

 

Q2. 왜 SSH 원격 연결에 RSA를 쓰는가?

SSH(보안 셸)는 원격 장비에 접속할 때 암호화된 통신을 제공한다.

이때 RSA 키는 두 가지 역할을 함:

1. 서버 인증(Server Authentication)

  • 클라이언트가 접속할 때, "내가 진짜 이 장비야"라는 걸 증명하기 위해 서버가 자신의 공개 키를 클라이언트에게 준다.
  • 클라이언트는 이 키로 서버의 신원을 확인하고, 위조된 서버에 접속하지 않게 한다.

2. 세션 키 교환(Key Exchange)

  • 접속 시 바로 모든 통신을 RSA로 암호화하는 건 느리니까,
    처음에만 RSA로 대칭 키를 안전하게 주고받고, 이후엔 빠른 대칭 암호화로 데이터를 주고받는다.
  • 요약하면: RSA는 "보안 터널을 안전하게 시작"하는 열쇠 역할.

Q3. 왜 호스트 이름 + 도메인 이름을 조합해 키 이름을 만들까?

Cisco IOS에서 crypto key generate rsa를 실행하면 내부적으로 이렇게 동작:

1. 키 파일 이름이 필요

  • 키는 장비 내부의 NVRAM에 저장되는데, 파일처럼 이름이 있어야 관리 가능.

2. 키 이름 규칙

  • Cisco IOS는 기본적으로 (호스트이름).(도메인이름) 형태로 키 이름을 만듦.
    예: R1.cisco.com

3. 이유

유일성 보장

  • 같은 네트워크 안에 장비가 여러 개 있을 때 키 이름이 중복되면 혼란이 생긴다.
  • 장비마다 호스트 이름이 다르고, 도메인까지 붙이면 거의 100% 고유한 이름이 됨.

인증서 표준 호환성

  • PKI(Public Key Infrastructure)에서는 키의 이름이 보통 FQDN(Fully Qualified Domain Name, 완전한 도메인 이름)으로 지정된다.
  • 이렇게 하면 인증서 발급 시 바로 호환 가능.
 

3단계: RSA 키 쌍 생성 및 SSH 서버 활성화

R1(config)# crypto key generate rsa
How many bits in the modulus [512]: 1024

✔ 개념 설명:

  • 이 명령어는 공개키/개인키 쌍을 생성하고, 동시에 SSH 서버를 자동 활성화
  • 모듈러스 길이(modulus)는 RSA 키의 강도. 일반적으로 1024 또는 2048을 사용

 

RSA 키 생성 여부 확인:

R1# show crypto key mypubkey rsa

 

RSA 키 삭제:

R1(config)# crypto key zeroize rsa

→ 이 명령을 실행하면 SSH도 자동으로 꺼짐

 

4단계: 사용자 계정 생성 (로컬 인증용)

R1(config)# username R2 secret cisco

✔ 개념 설명:

  • SSH는 기본적으로 사용자 인증이 필요
  • 이 명령은 장비 내부 로컬 사용자 데이터베이스에 계정(admin/ccna)을 추가함
  • secret은 암호를 암호화해서 저장 (password는 평문 저장이므로 비권장)
 

5단계: VTY 라인 설정 - SSH 허용

R1(config)# line vty 0 4
R1(config-line)# transport input ssh
R1(config-line)# login local
R1(config-line)# exit

✔ 개념 설명:

  • line vty원격 접속을 허용하는 가상 단말 포트 설정 영역
  • transport input ssh → Telnet 접속은 차단, SSH만 허용
  • login local → 앞서 만든 로컬 계정으로 인증 처리
  • VTY 0~15는 동시에 최대 16개의 SSH 접속을 허용함
 

6단계: SSH 버전 명시적 설정 (보안 강화)

R1(config)# ip ssh version 2

✔ 개념 설명:

  • 기본값은 SSH v1과 v2 모두 지원 → 보안 취약점 있는 v1 사용될 가능성 있음
  • 이 명령어로 v2만 강제 사용하도록 설정
  • show ip ssh에서 version이 2.0으로 표시됨을 확인

 

접속확인(R2 -> R1)

show users	#전체 접속 세션 (콘솔 + VTY) 확인
show ssh	#SSH 접속 세션만 확인​

 

추가 설정 & 개념

SSH 디버깅 명령어

debug ip ssh	#SSH 프로토콜 전체 흐름 디버깅 (키 교환 포함)
debug ip ssh packet	#SSH  패킷 송수신 정보 (낱개 메시지까지 로그)
 

현재 실행중인 디버깅 상태 확인

R1# show debugging
 

모든 디버그 끄기

R1# undebug all
R1# un all

 

'네트워크 > 기초 학습' 카테고리의 다른 글

ACL 실습  (3) 2025.08.11
NAT 실습  (0) 2025.08.10
Day 10: 네트워크 장비들  (4) 2025.08.10
Day 9: 네트워크 프로토콜들  (3) 2025.08.08
Day 8: VLAN, Trunk, 802.1Q 태깅  (1) 2025.08.07