SSH로 서버에 접속하려는데 갑자기 이런 에러가 발생했다면, 당황스러우실 겁니다. 이전에는 잘 되던 접속이 어느 날 갑자기 안 된다면 더욱 그렇죠. 이 글에서는 이 문제의 원인과 해결 방법을 쉽게 이해할 수 있도록 설명드리겠습니다.
$ ssh user@211.47.xx.xx
Unable to negotiate with 211.47.xx.xx port 22: no matching host key type found. Their offer: ssh-rsa
📋 목차
🔍 에러가 발생하는 이유
간단한 비유로 이해하기
SSH 접속은 마치 은행의 보안 금고를 여는 것과 같습니다. 클라이언트(여러분)와 서버(은행)가 서로를 확인하기 위해 **호스트 키(Host Key)**라는 일종의 디지털 서명을 사용합니다.
ssh-rsa는 오래된 형태의 보안 열쇠입니다. 예전에는 안전했지만, 시간이 지나면서 보안 취약점이 발견되었습니다. 최신 OpenSSH는 더 안전한 열쇠만 사용하도록 정책이 변경되었고, 그 결과 오래된 ssh-rsa를 거부하게 된 것입니다.
기술적 배경
- RSA-SHA1 알고리즘: ssh-rsa는 SHA-1 해시 알고리즘을 사용합니다
- SHA-1의 취약점: 2017년 구글이 SHA-1 충돌 공격에 성공하면서 보안성이 의심받기 시작
- OpenSSH의 결정: 보안 강화를 위해 RSA-SHA1 기반 호스트 키를 기본적으로 비활성화
📊 OpenSSH 버전별 변경사항
OpenSSH 버전 변경 내용 시기
7.x 이하 | ssh-rsa 정상 지원 | ~2020년 |
8.2 (2020.02) | ssh-rsa 사용 시 경고 표시 | 2020년 2월 |
8.8 (2021.09) | ssh-rsa 기본 비활성화 🔴 | 2021년 9월 |
9.0 이상 | 더 강력한 보안 정책 적용 | 2022년 이후 |
왜 갑자기 에러가 발생했을까?
- 시스템 업데이트로 OpenSSH가 8.8 이상으로 업그레이드됨
- Ubuntu 22.04, Debian 12, Fedora 35 이상 등 최신 배포판은 기본적으로 OpenSSH 8.8+ 탑재
- 서버는 오래되어 ssh-rsa만 제공하지만, 클라이언트가 이를 거부
🔐 보안 이슈 이해하기
SSH-RSA가 왜 문제인가?
- SHA-1 해시 취약점
- 충돌 공격(Collision Attack) 가능성
- 이론적으로 위조된 서버로 접속 유도 가능
- 더 안전한 대안들
- rsa-sha2-256: RSA 키 + SHA-256 해시
- rsa-sha2-512: RSA 키 + SHA-512 해시
- ecdsa-sha2-nistp256: 타원곡선 암호화
- ssh-ed25519: 최신 표준, 가장 권장됨
실제 위험도는?
실무에서는 즉각적인 위험이 크지 않습니다. 하지만:
- 내부망 서버라도 보안 표준 준수 중요
- 규정 준수(Compliance) 요구사항
- 미래를 대비한 보안 업그레이드 필요
💡 해결 방법
🔴 방법 1: 임시 해결 (즉시 접속 필요 시)
Linux / macOS
# 명령어에 옵션 추가
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa user@211.47.xx.xx
Windows (PowerShell)
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa user@211.47.xx.xx
장점: 즉시 접속 가능
단점: 매번 긴 명령어 입력 필요, 보안 경고 무시
🟢 방법 2: 영구 해결 (권장)
Linux / macOS
Step 1: SSH 설정 파일 편집
# 사용자별 설정
nano ~/.ssh/config
# 또는 시스템 전체 설정 (관리자 권한 필요)
sudo nano /etc/ssh/ssh_config
Step 2: 다음 내용 추가
# 특정 서버만 ssh-rsa 허용
Host 211.47.xx.xx
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
# 또는 모든 서버에 적용 (비권장)
Host *
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
Step 3: 파일 권한 확인
chmod 600 ~/.ssh/config
Windows
방법 A: SSH Config 파일 사용 (Windows 10/11)
위치: C:\Users\사용자명\.ssh\config
# 메모장으로 편집
notepad C:\Users\%USERNAME%\.ssh\config
내용은 Linux와 동일
방법 B: PuTTY 사용 시
- Connection → SSH → Kex 메뉴
- "Algorithm selection policy" 수정
- rsa-sha2-512, rsa-sha2-256, ssh-rsa 순서로 배치
⭐ 방법 3: 서버 측 근본 해결 (최선의 방법)
서버 관리 권한이 있다면:
# 서버에서 실행
sudo ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
sudo ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key
# sshd_config 편집
sudo nano /etc/ssh/sshd_config
# 다음 라인 추가/수정
HostKeyAlgorithms ssh-ed25519,rsa-sha2-512,rsa-sha2-256
PubkeyAcceptedAlgorithms ssh-ed25519,rsa-sha2-512,rsa-sha2-256
# SSH 서비스 재시작
sudo systemctl restart sshd
🎯 영구적 해결 vs 임시 해결
언제 임시 해결을 사용하나?
✅ 긴급하게 서버 접속이 필요한 경우
✅ 서버 관리 권한이 없는 경우
✅ 일회성 작업인 경우
언제 영구 해결을 사용하나?
✅ 자주 접속하는 서버인 경우
✅ 보안 정책을 명확히 관리하고 싶은 경우
✅ 팀원들과 설정을 공유해야 하는 경우
🔧 트러블슈팅
여전히 접속이 안 된다면?
- OpenSSH 버전 확인
- ssh -V
- 상세 로그 확인
- ssh -vvv user@211.47.xx.xx
- 방화벽 확인
- telnet 211.47.xx.xx 22
- known_hosts 초기화
- ssh-keygen -R 211.47.xx.xx
📝 요약 체크리스트
- [ ] OpenSSH 버전이 8.8 이상인지 확인
- [ ] 임시 접속이 필요하면 -o 옵션 사용
- [ ] 정기적으로 접속한다면 ~/.ssh/config 설정
- [ ] 가능하면 서버 측에서 최신 호스트 키 생성
- [ ] 보안 정책과 편의성의 균형 고려
🚀 마치며
이 에러는 보안 강화를 위한 불가피한 변화입니다. 귀찮을 수 있지만, 장기적으로는 더 안전한 SSH 환경을 만드는 데 기여합니다.
우선 설명드린 임시 해결 방법으로 급한 불을 끄고, 시간을 내어 서버 관리자와 협의하여 서버 측 호스트 키를 업그레이드하는 것이 가장 좋습니다.
'테크 튜토리얼 & 팁' 카테고리의 다른 글
유튜브 쇼츠로 돈 버는 법: 광고 수익을 극대화하는 5가지 팁 (7) | 2025.06.07 |
---|---|
삼성 갤럭시S 스마트폰의 One UI 6.1 업데이트를 통한 Galaxy AI 활용하기 (11) | 2024.11.07 |
우분투 환경에서 VirtualBox 실행 시 USB 장치 에러 해결 방법 (0) | 2024.07.23 |
내돈내산 갤럭시북4 엣지 퀄컴 스냅드레곤: 코파일럿 플러스 활용기 (0) | 2024.07.15 |
라즈베리 파이로 워드프레스 블로그 서버 구축하기: DB서버 설정부터 운영까지 (7) | 2024.06.16 |