SSL/TLS와 SSH는 모두 공개키 암호화를 사용하는 암호화 프로토콜입니다. 하지만 서로 다른 대상을 위해 다른 문제를 해결합니다. SSL/TLS는 웹 연결(HTTPS)을 보호하고, SSH는 원격 서버 접근(터미널/명령줄)을 보호합니다.
빠른 비교
| SSL/TLS | SSH | |
|---|---|---|
| 정식 명칭 | Secure Sockets Layer / Transport Layer Security | Secure Shell |
| 목적 | 웹 트래픽 암호화 | 원격 서버 접근 |
| 사용 대상 | 브라우저, 웹 서버, API | 시스템 관리자, 개발자 |
| 포트 | 443 (HTTPS) | 22 |
| 인증 | 인증 기관의 인증서 | 공개키 또는 비밀번호 |
| 인증 기관 필요 | 예 (공개 신뢰 목적) | 아니요 |
| 일반 사용자 | 웹사이트 방문자 (무의식적) | 서버 관리자 (의도적) |
| 연결 유형 | 클라이언트 (브라우저) → 서버 | 사용자 터미널 → 서버 |
| 암호화 대상 | HTTP 요청/응답 | 셸 명령, 파일 전송 |
| 예시 | HTTPS 웹사이트, API, 이메일 (IMAPS) | ssh user@server, scp, sftp |
SSL/TLS 한 문단 요약
SSL/TLS는 웹 브라우저와 서버 간의 연결을 암호화합니다. https://example.com을 방문하면, 브라우저는 서버의 SSL 인증서(인증 기관이 발급)를 확인하고 암호화 매개변수를 협상하며, 모든 트래픽이 암호화된 채널을 통해 흐릅니다. 사용자가 아무것도 할 필요 없습니다 — HTTPS는 투명하게 작동합니다.
SSH 한 문단 요약
SSH는 사용자의 터미널과 원격 서버 간의 연결을 암호화합니다. ssh user@server.com을 실행하면, SSH 클라이언트가 서버의 공개키를 확인하고(첫 연결 시 확인), 사용자를 인증하고(비밀번호 또는 SSH 키 쌍으로), 암호화된 셸 세션을 제공합니다. SSH는 개발자와 관리자가 사용하며 — 일반 사용자는 거의 접하지 않습니다.
유사한 암호화 기술 사용
두 프로토콜 모두 동일한 기본 수학을 사용합니다:
| 개념 | SSL/TLS에서 | SSH에서 |
|---|---|---|
| 비대칭 암호화 | 인증서의 서버 공개키 | 서버 호스트 키 + 사용자 SSH 키 |
| 키 교환 | ECDHE Diffie-Hellman | Diffie-Hellman 또는 ECDH |
| 대칭 암호화 | AES-GCM, ChaCha20 | AES, ChaCha20 |
| 무결성 | HMAC / AEAD | HMAC / AEAD |
| 순방향 비밀성 | ECDHE 경유 (TLS 1.3에서 필수) | DH/ECDH 경유 |
알고리즘은 거의 동일합니다. 차이점은 프로토콜 계층과 신뢰 모델에 있습니다.
신뢰 모델의 차이
SSL/TLS: 인증 기관
SSL/TLS는 제3자 신뢰를 사용합니다. 브라우저는 약 100-150개의 인증 기관을 신뢰합니다. 서버가 신뢰할 수 있는 인증 기관이 서명한 인증서를 제시하면, 브라우저가 자동으로 수락합니다.
여러분은 인증 기관이 google.com의 인증서가 실제로 Google에 속한다는 것을 확인해 줄 것을 신뢰합니다.
SSH: 첫 사용 시 신뢰 (TOFU)
SSH는 직접 신뢰를 사용합니다. 서버에 처음 연결하면, SSH가 다음과 같이 물어봅니다:
The authenticity of host 'server.com' can't be established.
ED25519 key fingerprint is SHA256:xyz...
Are you sure you want to continue connecting? (yes/no)
지문을 한 번 확인하면, SSH가 이를 기억하고(~/.ssh/known_hosts), 이후 연결에서 이를 기준으로 검증합니다. 인증 기관이 관여하지 않습니다.
함께 사용할 수 있나요?
네 — 두 프로토콜은 경쟁이 아닌 보완 관계입니다:
- SSL/TLS는 방문자가 보는 웹사이트를 보호합니다 (
https://example.com) - SSH는 웹사이트를 운영하는 서버를 관리하는 방법을 보호합니다 (
ssh admin@server) - SSH로 서버에 접속하여 Nginx에 SSL 인증서를 설치할 수 있습니다
대부분의 서버는 포트 443(SSL/TLS를 사용하는 HTTPS)과 포트 22(SSH)를 동시에 열어둡니다.
자주 묻는 질문
어느 것이 더 안전한가요?
둘 다 올바르게 설정하면 동일하게 안전합니다. 두 프로토콜 모두 같은 암호화 알고리즘을 사용합니다. “현관 자물쇠와 차 자물쇠 중 어느 것이 더 안전한가?”라고 묻는 것과 같습니다. 서로 다른 것을 보호합니다.
둘 다 필요한가요?
웹 서버의 경우: 일반적으로 그렇습니다. SSL/TLS는 방문자를 보호합니다(HTTPS). SSH는 서버 접근을 보호합니다(관리). 서로 다른 목적을 위한 것입니다.
SFTP와 FTPS는 같은 건가요?
아니요. SFTP (SSH File Transfer Protocol)는 SSH 위에서 실행됩니다(포트 22). FTPS (FTP Secure)는 SSL/TLS 위에서 실행됩니다(포트 990 또는 STARTTLS를 사용하는 포트 21). 둘 다 파일 전송을 암호화하지만 다른 프로토콜을 사용합니다. SFTP가 더 일반적이고 설정이 간단합니다.
SSL/TLS가 SSH를 대체할 수 있나요?
아니요. SSL/TLS는 셸이나 명령줄 인터페이스를 제공하지 않습니다. TLS를 사용하여 “서버에 SSH 접속”할 수 없습니다. 일부 웹 기반 터미널(Wetty나 ttyd 같은)이 HTTPS/WebSocket을 통해 셸 접근을 제공하지만, 기본 개념은 다릅니다.