1. 서버실에 직접 가지 않아도 되는 이유
전 세계 어딘가의 데이터센터에 있는 서버를 집에 앉아서 조작할 수 있다는 것은 생각해보면 꽤 신기한 일입니다. 개발자나 서버 관리자들은 커피숍에서, 자택에서, 심지어 해외 출장 중에도 서버에 접속해 작업을 합니다.
이것이 가능한 이유는 SSH 덕분입니다.
2. SSH의 정의와 역사
**SSH(Secure Shell)**는 네트워크를 통해 원격 컴퓨터에 안전하게 접속하고 명령을 실행할 수 있는 프로토콜입니다.
SSH 이전에는 Telnet이 원격 접속의 표준이었습니다. 하지만 Telnet은 모든 데이터가 암호화되지 않은 채로 전송됐습니다. 아이디와 비밀번호를 포함한 모든 통신 내용이 네트워크를 감청하는 제3자에게 그대로 노출될 수 있었습니다.
1995년 핀란드의 개발자 타투 일요넨(Tatu Ylönen)이 보안 문제를 해결하기 위해 SSH를 개발했습니다. 현재는 SSH 2.0 버전이 표준으로 사용됩니다.
| 비교 항목 | Telnet | SSH |
|---|---|---|
| 데이터 암호화 | 없음 | 강력한 암호화 |
| 기본 포트 | 23번 | 22번 |
| 현재 사용 여부 | 거의 사용 안 함 | 서버 접속 표준 |
| 보안 | 매우 취약 | 안전 |
3. SSH는 어떻게 안전한가? – 암호화 원리
SSH는 공개키 암호화 방식을 사용해 통신을 암호화합니다.
쉽게 설명하면, SSH는 자물쇠(공개키)와 열쇠(개인키)를 활용합니다. 공개키는 누구에게나 공개할 수 있는 자물쇠이고, 개인키는 본인만 가지는 열쇠입니다. 공개키로 잠근 데이터는 개인키로만 열 수 있습니다.
서버에 공개키를 등록해두면, 이후 접속 시 클라이언트가 개인키를 가지고 있음을 증명하는 방식으로 인증합니다. 실제 비밀번호가 네트워크를 통해 오가지 않아 매우 안전합니다.
4. SSH 접속에 필요한 정보
SSH로 서버에 접속하기 위해서는 네 가지 정보가 필요합니다.
서버 주소: IP 주소 또는 도메인. AWS EC2라면 퍼블릭 IP 주소입니다.
포트 번호: 기본값은 22번입니다. 보안 강화를 위해 변경한 경우 해당 번호를 사용합니다.
사용자 이름: 서버에 등록된 계정 이름입니다. Ubuntu 서버는 기본값이 ubuntu, Amazon Linux는 ec2-user입니다.
인증 수단: 비밀번호 또는 SSH 키 파일(.pem, .ppk)입니다.
5. 비밀번호 방식 vs 키 방식 – 무엇이 더 안전한가?
비밀번호 인증 방식은 접속 시 비밀번호를 입력하는 방식입니다. 간편하지만 무차별 대입 공격(Brute Force)에 취약합니다. 자동화된 봇이 수많은 비밀번호 조합을 시도하면 언젠가 뚫릴 수 있습니다.
SSH 키 인증 방식은 개인키 파일을 사용해 인증하는 방식입니다. 수천 자리의 암호화 키를 무차별 대입으로 뚫는 것은 사실상 불가능에 가깝습니다. AWS EC2는 기본적으로 키 인증 방식만 사용합니다.
운영 서버라면 반드시 키 인증 방식을 사용하고 비밀번호 인증은 비활성화하는 것이 권장됩니다.
6. 운영체제별 SSH 접속 방법
Windows (터미널 / PowerShell)
기본 접속 형태입니다. 터미널을 열고 아래 형태로 입력합니다.
ssh 사용자명@서버IP주소
AWS 키 파일을 사용하는 경우 아래처럼 키 파일 경로를 지정합니다.
ssh -i 키파일경로.pem 사용자명@서버IP주소
Mac / Linux (터미널)
Mac과 Linux는 SSH가 기본 내장되어 있어 터미널에서 동일한 방식으로 접속합니다. 키 파일 사용 시 권한 오류가 발생하면 아래 명령으로 파일 권한을 수정합니다.
chmod 400 키파일.pem
PuTTY (Windows 그래픽 방식)
명령어 방식이 불편한 분들은 PuTTY를 사용할 수 있습니다. Host Name에 서버 IP, Port에 22를 입력하고 SSH를 선택한 뒤 Open을 클릭하면 됩니다.
7. SSH 접속 후 알아두면 좋은 것들
SSH로 서버에 접속하면 텍스트만 있는 터미널 화면이 나타납니다.
현재 접속된 서버의 이름과 사용자 이름이 프롬프트에 표시됩니다. 예를 들어 ubuntu@myserver:~$ 형태로 나타납니다.
화면이 낯설더라도 당황하지 않아도 됩니다. 이전에 배운 리눅스 기본 명령어 몇 가지만 알면 충분히 작업이 가능합니다. 접속을 종료하고 싶으면 exit을 입력하면 됩니다.
SSH 세션은 인터넷 연결이 끊기거나 일정 시간 동안 아무 작업을 하지 않으면 자동으로 종료됩니다.
8. 정리 및 다음 단계
오늘 배운 핵심을 정리합니다.
- SSH는 원격 서버에 안전하게 접속하기 위한 암호화 프로토콜입니다.
- Telnet과 달리 모든 통신 내용이 암호화되어 안전합니다.
- 접속에는 서버 주소, 포트(기본 22번), 사용자명, 인증 수단이 필요합니다.
- 비밀번호 방식보다 키 인증 방식이 훨씬 안전합니다.
- Windows, Mac, Linux 모두 터미널에서 동일한 명령어로 접속합니다.
다음 글에서는 새로 받은 서버를 처음 세팅할 때 반드시 해야 할 기본 설정들을 알아보겠습니다.