🔐 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 설정을 변경하여 비밀번호 로그인 자체를 완전히 차단하고,
키 기반 접속만 허용하는 방법을 다루겠습니다.
추가적으로 리눅스 커널과 시스템콜을 더 공부하고싶다면 네트워크 완전 정복을 참고하세요. https://reallinux.co.kr/course/se_network
