🔐 SSH 비밀번호 없이 접속하기 — 공개키 인증으로 안전하고 편리하게!

서버에 접속할 때 매번 비밀번호를 입력하는 게 번거롭거나,
보안적으로 걱정될 때가 있으셨을 겁니다.
이번 글에서는 SSH 비밀번호 없이 접속하는 방법, 즉 공개키 인증 방식을 자세히 알아보겠습니다.
🧠 SSH란 무엇인가?
먼저 SSH 접속 방식을 이해하기 위해 간단히 SSH(Secure Shell) 를 짚고 넘어가겠습니다.
SSH(Secure Shell)
네트워크 상에서 보안이 적용된 원격 쉘 접속 프로토콜입니다.
주로 원격 리눅스 서버에 로그인하거나 명령을 실행할 때 사용됩니다.
일반적으로 SSH는 다음과 같은 상황에서 자주 사용됩니다.
- 학교 또는 회사의 리눅스 서버에 원격 접속할 때
- AWS, GCP, Azure 등의 클라우드 서버에 접속할 때
- 개발 환경에서 GitHub 리포지토리에 접근할 때
🚫 비밀번호 로그인은 안전하지 않다
SSH 접속 시 아이디와 비밀번호를 입력해 로그인할 수 있습니다.
하지만 이 방식은 추천되지 않습니다.
왜 비밀번호 로그인이 위험할까?
서버가 공인 IP 주소를 가지고 있을 경우,
전 세계에서 해당 IP를 대상으로 자동화된 봇 공격이 끊임없이 시도됩니다.
예를 들어:
- root/root
- admin/admin
- user/1234
- test/test123
이런 식으로 “있을 법한 조합”을 무작위로 입력하는 Brute-force 공격이 매우 흔합니다.
이렇게 서버가 뚫리면,
- 시스템이 암호화되어 랜섬웨어 공격을 당하거나,
- 악성코드 배포용 봇넷의 일부로 전락할 수도 있습니다.
🔥 실제 실험해보면
비밀번호를 단순하게 설정한 채 공인 IP를 열어두면
몇 시간 내로 외부에서 침입 시도가 발생하는 것을 로그로 확인할 수 있습니다.
따라서 SSH 비밀번호 로그인은 아예 비활성화하고, 키 기반 접속으로 전환하는 것이 필수적입니다.

🔑 SSH 키 기반 인증이란?
비밀번호 대신 공개키(Public Key) / 비밀키(Private Key) 쌍을 이용해 로그인하는 방식입니다.
한 번 키를 생성하고 서버에 등록해두면,
이후에는 비밀번호 없이 자동으로 인증이 이뤄집니다.
이 방식은 다음과 같은 장점이 있습니다.
항목 설명
| 🔒 보안성 | 비밀번호 유출 위험이 없고, 암호학적 인증으로 안전 |
| ⚡ 편의성 | 매번 로그인 시 비밀번호 입력 필요 없음 |
| 🌍 확장성 | GitHub, 클라우드 서버 등 다양한 서비스에서 동일한 키 활용 가능 |

🧰 SSH 키 생성 및 등록 절차
이제 실습을 통해 SSH 키를 생성하고 등록하는 과정을 살펴보겠습니다.
1️⃣ 키 생성하기
터미널에서 아래 명령어를 입력합니다.
ssh-keygen
아무 옵션 없이 실행해도 됩니다.
기본 경로(~/.ssh/) 아래에 두 개의 파일이 생성됩니다:
- id_rsa → 비밀키 (절대 외부에 공유 금지)
- id_rsa.pub → 공개키 (서버에 등록하는 키)
2️⃣ 서버에 공개키 등록하기
공개키(.pub 파일)의 내용을 서버에 등록하면 됩니다.
수동으로 등록할 수도 있고, 명령어 한 줄로도 가능합니다.
✅ 자동 등록 (추천)
ssh-copy-id -p 2222 user@211.58.70.130
- -p 2222 : SSH 포트 지정 (기본 포트는 22)
- user@IP : 접속 대상 계정과 서버 주소
처음 한 번은 비밀번호 입력이 필요하지만,
그 이후부터는 비밀번호 없이 접속 가능해집니다.
3️⃣ SSH 접속 테스트
공개키가 정상 등록되면, 이제 다음 명령어로 비밀번호 없이 접속할 수 있습니다.
ssh -p 2222 user@211.58.70.130
비밀번호 입력 없이 바로 셸 프롬프트가 뜨면 성공입니다 🎉
4️⃣ 내부 동작 원리
SSH 공개키 인증의 핵심 구조는 다음과 같습니다.
- 클라이언트가 비밀키로 암호화한 인증 메시지를 전송
- 서버는 등록된 공개키로 이를 복호화
- 내용이 일치하면 사용자 인증 성공
즉, 비밀키는 외부로 노출되지 않고, 공개키는 서버가 검증용으로만 사용합니다.
이 덕분에 보안이 뛰어나면서도 자동 로그인이 가능합니다.
⚙️ GitHub에서도 동일한 원리
이 방식은 단순히 SSH 원격 접속뿐 아니라,
GitHub, GitLab 등에서도 동일한 방식으로 사용됩니다.
코드를 푸시(git push)하거나 내려받을(git pull) 때
매번 ID/비밀번호를 입력하지 않아도 되고,
보안적으로도 훨씬 안전합니다.
🧪 실습 환경 예시 — 리얼리눅스 Level-Up Challenge
리얼리눅스(Level-Up Challenge) 사이트의 9번 문제에서는
SSH 키 기반 인증 실습을 직접 수행할 수 있습니다.
- 실습 서버: 포트번호 2222
- 접속 예시:
ssh -p 2222 user@211.58.70.130
비밀번호로 접속한 뒤,
키를 생성(ssh-keygen)하고,
ssh-copy-id 명령어로 공개키를 등록하면
다음 접속부터는 비밀번호 없이 로그인됩니다.
✅ 마무리
SSH 비밀번호 로그인은 간단하지만 매우 위험한 방식입니다.
대신, 공개키 기반 인증을 사용하면
보안과 편의성 두 가지를 모두 확보할 수 있습니다.
🔐 정리하자면:
- SSH는 보안 원격 접속 프로토콜이다.
- 비밀번호 로그인은 봇 공격에 취약하다.
- 공개키 인증은 안전하고, 한 번 설정하면 편리하다.
- GitHub 등에서도 동일한 방식으로 사용된다.
📘 참고 명령어 요약
| ssh-keygen | 공개키/비밀키 생성 |
| ssh-copy-id user@host | 서버에 공개키 자동 등록 |
| ssh -p <포트> user@host | SSH 접속 |
| cat ~/.ssh/id_rsa.pub | 공개키 내용 확인 |
| exit | 원격 접속 종료 |
🧩 다음 단계
다음 글에서는
sshd_config 설정을 변경하여 비밀번호 로그인 자체를 완전히 차단하고,
키 기반 접속만 허용하는 방법을 다루겠습니다.
추가적으로 ssh 접속 관련을 더 공부하고싶다면 네트워크 완전 정복을 참고하세요. https://reallinux.co.kr/course/se_network
'리눅스 이야기' 카테고리의 다른 글
| 구글웹까지 네트워크 통신경로 확인하려면? (0) | 2025.11.05 |
|---|---|
| 8080 포트번호 어떻게 차단하나요 ? (0) | 2025.10.29 |
| 프로세스가 호출하는 시스템콜 보려면? (0) | 2025.10.15 |
| 프로세스 우선순위 어떻게 바꾸나요? (0) | 2025.10.13 |
| CPU 100% 프로세스 어떻게 찾고 종료하죠? (0) | 2025.09.29 |