본문 바로가기
리눅스 이야기

비밀번호 없이 SSH 접속 어떻게 하죠?

by reallinux1 2025. 10. 22.

🔐 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 공개키 인증의 핵심 구조는 다음과 같습니다.

  1. 클라이언트가 비밀키로 암호화한 인증 메시지를 전송
  2. 서버는 등록된 공개키로 이를 복호화
  3. 내용이 일치하면 사용자 인증 성공

즉, 비밀키는 외부로 노출되지 않고, 공개키는 서버가 검증용으로만 사용합니다.
이 덕분에 보안이 뛰어나면서도 자동 로그인이 가능합니다.

⚙️ 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://youtu.be/y8PVU8txYgg

 

추가적으로 ssh 접속 관련을 더 공부하고싶다면 네트워크 완전 정복을 참고하세요. https://reallinux.co.kr/course/se_network