
저도 처음 VPS 서버를 개설하고 SSH 접속을 시도했을 때 검은 터미널 화면이 뜨는 게 너무 낯설어서 겁먹었던 기억이 있어요. 하지만 딱 두 가지 — 접속 명령어와 기본 터미널 조작법만 알면 누구든 바로 사용할 수 있습니다. 이 글에서는 SSH가 처음인 분들도 따라할 수 있도록 접속 방법부터 보안 설정까지 단계별로 정리해 드릴게요.
1. SSH란 무엇인가? 왜 필요한가
SSH(Secure Shell) 는 네트워크를 통해 원격 서버에 안전하게 접속해 명령어를 실행할 수 있게 해주는 프로토콜입니다. 쉽게 말해 집에서 서버 컴퓨터 앞에 직접 앉아 키보드를 치는 것처럼, 인터넷을 통해 원격으로 서버를 조작할 수 있게 해주는 도구입니다.
SSH가 필요한 상황:
- VPS, 클라우드 서버(AWS, GCP 등) 관리
- 워드프레스 서버 파일 직접 편집
- 웹 서버(Nginx, Apache) 설정 변경
- 데이터베이스 관리
- 자동화 스크립트 실행
SSH는 모든 데이터를 암호화해서 전송하므로, 과거에 사용하던 Telnet보다 훨씬 안전합니다.
2. SSH 접속에 필요한 정보 확인
SSH 접속에는 아래 4가지 정보가 필요합니다.
| 항목 | 설명 | 예시 |
|---|---|---|
| 호스트(Host) | 서버 IP 또는 도메인 | 123.456.789.0 |
| 포트(Port) | SSH 기본 포트 | 22 (변경된 경우 다를 수 있음) |
| 사용자명(Username) | 서버 계정 이름 | root 또는 ubuntu |
| 인증 방법 | 비밀번호 또는 SSH 키 파일 | 비밀번호 또는 .pem 파일 |
접속 정보는 호스팅사 또는 클라우드 서비스 가입 시 발급된 이메일이나 관리 콘솔에서 확인할 수 있습니다.
3. 윈도우에서 SSH 접속 방법
방법 1 — Windows PowerShell 또는 CMD 사용 (윈도우 10/11)
윈도우 10 버전 1809 이상부터는 별도 프로그램 설치 없이 PowerShell 또는 CMD에서 SSH를 바로 사용할 수 있습니다.
- PowerShell 또는 CMD 실행
- 아래 명령어 입력
bash
ssh 사용자명@서버IP주소
# 예시
ssh root@123.456.789.0
# 포트가 22가 아닌 경우
ssh -p 포트번호 사용자명@서버IP주소
# SSH 키 파일(.pem)로 접속하는 경우
ssh -i "키파일경로.pem" 사용자명@서버IP주소
- 처음 접속 시 “Are you sure you want to continue connecting?” 메시지 → yes 입력
- 비밀번호 입력 (입력 시 화면에 표시되지 않는 것이 정상)
- 프롬프트가 root@서버명:~# 형태로 바뀌면 접속 성공
방법 2 — PuTTY 사용 (GUI 방식, 직관적)
- putty.org 에서 PuTTY 다운로드 및 설치
- PuTTY 실행
- Host Name 칸에 서버 IP 입력
- Port: 22 입력
- Connection type: SSH 선택
- 자주 사용하는 서버라면 Saved Sessions 에 이름 입력 후 Save
- Open 클릭
- 로그인 창에 사용자명, 비밀번호 입력
4. Mac/Linux에서 SSH 접속 방법
Mac과 Linux는 터미널에서 바로 SSH 명령어를 사용할 수 있습니다.
- 터미널 실행 (Mac: Spotlight에서 Terminal 검색)
- 아래 명령어 입력
bash
# 기본 접속
ssh 사용자명@서버IP
# 특정 포트로 접속
ssh -p 2222 사용자명@서버IP
# PEM 키 파일로 접속 (AWS EC2 등)
ssh -i ~/.ssh/mykey.pem ubuntu@서버IP
# 처음 접속 시 키 파일 권한 설정 필요
chmod 400 ~/.ssh/mykey.pem
5. SSH 키(Key) 인증 설정 방법
비밀번호 대신 SSH 키를 사용하면 보안이 훨씬 강화됩니다. 비밀번호 없이도 접속 가능하고, 무차별 대입 공격(Brute Force)을 원천 차단할 수 있습니다.
SSH 키 쌍 생성:
bash
# 내 PC(로컬)에서 실행
ssh-keygen -t rsa -b 4096 -C "이메일주소"
# 저장 위치: 기본값 사용 (엔터)
# 패스프레이즈: 입력 권장 (추가 보안)
생성 결과:
- id_rsa — 개인 키 (절대 외부 유출 금지)
- id_rsa.pub — 공개 키 (서버에 등록할 키)
공개 키를 서버에 등록:
bash
# 한 줄 명령어로 자동 등록
ssh-copy-id 사용자명@서버IP
# 수동으로 등록하는 경우
cat ~/.ssh/id_rsa.pub | ssh 사용자명@서버IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
이후부터는 비밀번호 없이 SSH 키로 자동 접속됩니다.
6. SSH 접속 후 기본 명령어 모음
| 명령어 | 기능 |
|---|---|
| ls -la | 현재 디렉토리 파일 목록 (숨김 파일 포함) |
| cd /var/www/html | 해당 디렉토리로 이동 |
| pwd | 현재 위치 경로 확인 |
| cat 파일명 | 파일 내용 출력 |
| nano 파일명 | 파일 편집 (초보자 친화적) |
| vi 파일명 | 파일 편집 (고급) |
| mkdir 폴더명 | 폴더 생성 |
| rm -rf 폴더명 | 폴더 및 내용 삭제 (주의!) |
| cp 원본 대상 | 파일 복사 |
| mv 원본 대상 | 파일 이동 또는 이름 변경 |
| chmod 755 파일명 | 파일 권한 변경 |
| chown user:group 파일명 | 파일 소유자 변경 |
| sudo 명령어 | 관리자 권한으로 명령 실행 |
| exit | SSH 접속 종료 |
7. SSH 보안 강화 설정
SSH는 서버의 핵심 접근 경로이므로 보안 설정이 매우 중요합니다.
SSH 설정 파일 수정 (/etc/ssh/sshd_config):
bash
sudo nano /etc/ssh/sshd_config
권장 보안 설정:
# 기본 포트 22에서 변경 (예: 2222)
Port 2222
# root 직접 로그인 차단
PermitRootLogin no
# 비밀번호 인증 비활성화 (SSH 키만 허용)
PasswordAuthentication no
# 최대 로그인 시도 횟수 제한
MaxAuthTries 3
# 로그인 타임아웃 설정
LoginGraceTime 30
설정 변경 후 SSH 서비스 재시작:
bash
sudo systemctl restart sshd
8. SSH 접속 오류 해결 방법
| 오류 메시지 | 원인 | 해결 방법 |
|---|---|---|
| Connection refused | SSH 서비스 중지 또는 포트 차단 | 서버에서 SSH 서비스 실행 여부 확인 |
| Connection timed out | 방화벽이 포트 22 차단 | 호스팅사 방화벽에서 22번 포트 허용 |
| Permission denied (publickey) | SSH 키 파일 오류 또는 권한 문제 | chmod 400 키파일.pem 권한 설정 |
| Host key verification failed | 서버 IP가 바뀌었거나 키가 변경됨 | known_hosts 파일에서 해당 항목 삭제 |
| Too many authentication failures | 키 파일이 너무 많이 시도됨 | ssh -i 특정키파일 -o IdentitiesOnly=yes 사용 |
| WARNING: UNPROTECTED PRIVATE KEY | 키 파일 권한이 너무 넓음 | chmod 400 키파일명 실행 |
9. 자주 묻는 질문(FAQ)
Q. SSH 포트를 22에서 변경하면 보안이 좋아지나요? 네, 효과가 있습니다. 대부분의 자동화된 해킹 시도는 22번 포트를 대상으로 하기 때문에, 포트를 변경하면 이런 무차별 공격을 크게 줄일 수 있습니다. 1024~65535 사이의 번호로 변경을 권장합니다.
Q. SSH 키를 분실했을 때는 어떻게 하나요? 개인 키를 분실했다면 해당 키 쌍을 서버의 authorized_keys에서 삭제하고 새 키 쌍을 생성해 다시 등록해야 합니다. 키 접속만 허용하고 비밀번호 접속을 비활성화했다면, 호스팅 콘솔에서 서버에 직접 접근해야 합니다.