SSH 비밀번호 분실 시 재설정 방법

홈서버는 자동화 솔루션으로서 효율을 극대화하지만, SSH 키나 비밀번호 분실은 데이터 접근을 막아 서버의 영속성복원력을 위협할 수 있습니다. 이 글에서는 SSH 키 복구 및 SSH 비밀번호 분실 시 재설정 방법, 그리고 미래의 SSH 접속 불가 상황을 방지하기 위한 SSH 키 관리 전략을 상세히 다룹니다.

📌 SSH 키 관리 및 보안 강화 가이드 – ITWorld

홈서버의 SSH 비밀번호를 잊어버렸다면, 서버의 물리적 콘솔에 접근하여 재설정하는 것이 첫 번째 방법입니다. 운영체제별로 약간의 차이는 있지만, 기본적인 절차는 동일합니다. 여기서는 Ryzen 5 PRO 7530U / RAM 32GB / Ubuntu Server 22.04 LTS 환경을 기준으로 설명합니다.

물리적 콘솔 접근을 통한 비밀번호 재설정

서버에 직접 연결된 모니터와 키보드를 사용하거나, 원격지에 있다면 IP KVM과 같은 도구를 활용하여 로그인 프롬프트에 접근할 수 있습니다. 콘솔 접근 후 다음 단계를 따르세요.

  • 서버를 재부팅하고 GRUB 부트로더 화면에서 ‘e’ 키를 눌러 부팅 옵션을 편집합니다.
  • 리눅스 커널 라인(linux로 시작하는 라인)에서 rorw init=/bin/bash로 변경합니다. 이는 루트 파일 시스템을 읽기/쓰기 모드로 마운트하고 셸로 부팅하도록 지시합니다.
  • F10 또는 Ctrl+X를 눌러 수정된 옵션으로 부팅합니다.
  • 부팅이 완료되면 루트 셸 프롬프트(#)가 나타납니다. 여기서 passwd 명령어를 사용하여 비밀번호를 재설정할 수 있습니다. 예를 들어, 사용자 계정 ‘myuser’의 비밀번호를 재설정하려면 다음 명령어를 입력합니다.
passwd myuser
  • 새로운 비밀번호를 두 번 입력하여 확인합니다.
  • 비밀번호 재설정 후에는 sync 명령어로 변경사항을 디스크에 동기화하고, reboot -f 명령어로 서버를 강제 재부팅합니다. 이제 새로운 비밀번호로 SSH 접속이 가능할 것입니다.
복구 비밀번호 분실

OpenMediaVault (OMV) 환경에서 비밀번호 초기화

OpenMediaVault와 같이 웹 기반 관리 인터페이스를 제공하는 시스템에서는 GUI를 통해 관리자 비밀번호를 초기화할 수 있습니다. 웹 GUI 접근이 불가능하다면, 위에서 설명한 리눅스 루트 셸 접근 방식을 사용하여 /etc/shadow 파일을 직접 수정하는 방법도 고려할 수 있습니다. 다만, 이 방법은 고급 사용자에게 권장되며, 잘못된 수정은 시스템 부팅 불가를 초래할 수 있으니 주의해야 합니다.

SSH 키 파일 분실 시 복구 및 재생성 전략

SSH 키는 비밀번호보다 강력한 보안을 제공하지만, 개인 키 파일(.pem, .ppk 등)을 분실하면 서버 접근이 불가능해집니다. SSH 키 암호(passphrase)는 복구가 불가능하므로, 잊어버렸다면 새로운 SSH 키 쌍을 생성해야 합니다. 키 파일 자체를 분실했다면, 서버에 물리적으로 접근하거나 다른 방식으로 접근하여 새로운 공개 키를 등록해야 합니다.

클라우드 환경 (AWS EC2)의 키 복구 개념

홈서버 환경에서는 드물지만, 클라우드 환경(예: AWS EC2)에서는 SSH 키 분실 시 다음과 같은 방식으로 키를 복구할 수 있습니다. 이 과정은 서버의 디스크에 직접 접근하여 authorized_keys 파일을 수정하는 원리를 보여줍니다.

📌 AWS EC2 인스턴스 SSH 키 분실 시 복구 방법 – AWS 공식 문서

  1. 키를 분실한 EC2 인스턴스를 중지합니다.
  2. 해당 인스턴스의 루트 EBS 볼륨을 분리합니다.
  3. 새로운 임시 EC2 인스턴스를 생성하고, 이 인스턴스에 분리한 EBS 볼륨을 보조 볼륨으로 연결합니다.
  4. 임시 인스턴스에 SSH로 접속하여 연결된 보조 볼륨을 마운트합니다.
  5. 마운트된 볼륨 내에서 원래 인스턴스의 ~/.ssh/authorized_keys 파일을 찾아 새로운 공개 키로 수정하거나 추가합니다.
  6. 수정 후 보조 볼륨을 언마운트하고, 임시 인스턴스에서 분리합니다.
  7. 분리한 EBS 볼륨을 원래 인스턴스에 다시 루트 볼륨으로 연결하고, 인스턴스를 시작합니다.

이 방법은 홈서버에서 디스크를 다른 시스템에 연결하여 authorized_keys 파일을 수정하는 것과 유사합니다. 핵심은 서버의 파일 시스템에 접근하여 인증 정보를 업데이트하는 것입니다.

새로운 SSH 키 쌍 생성 및 서버에 등록

가장 일반적이고 권장되는 SSH 재설정 방법은 새로운 SSH 키 쌍을 생성하고 이를 서버에 등록하는 것입니다. 다음 단계를 따르세요.

  1. 로컬 시스템에서 새 키 쌍 생성: 터미널 또는 명령 프롬프트에서 ssh-keygen 명령어를 실행합니다.
ssh-keygen -t rsa -b 4096 -C "[email protected]"
  • 명령어 실행 시 개인 키와 공개 키가 생성됩니다. 개인 키는 외부에 노출되지 않도록 주의해야 합니다.
  1. 공개 키를 서버에 등록: 생성된 공개 키(일반적으로 ~/.ssh/id_rsa.pub)를 서버의 ~/.ssh/authorized_keys 파일에 추가해야 합니다. 서버에 비밀번호로 SSH 접속이 가능하다면 ssh-copy-id 명령어를 사용하거나 수동으로 복사할 수 있습니다.
ssh-copy-id -i ~/.ssh/id_rsa.pub user@your_server_ip
  • ssh-copy-id를 사용할 수 없거나 서버에 다른 방식으로 접근해야 한다면, ~/.ssh/authorized_keys 파일을 직접 편집하여 새로운 공개 키 내용을 추가합니다.
# 서버에서
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "your_public_key_string_here" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
  • ‘your_public_key_string_here’ 부분에는 로컬에서 생성한 id_rsa.pub 파일의 전체 내용을 붙여넣으세요.
  1. 새 키로 SSH 접속 시도: 이제 새로운 개인 키를 사용하여 서버에 SSH 접속을 시도합니다.
ssh -i ~/.ssh/id_rsa user@your_server_ip

Windows 환경에서 SSH 클라이언트 및 키 관리

복구 비밀번호 분실

Windows 환경에서는 PuTTY, PortX, Xshell과 같은 SSH 클라이언트를 주로 사용합니다. PortX는 PuTTY의 대안으로 추천되는 무료 오픈소스 SSH 클라이언트로, Windows, macOS, Linux 등 다양한 플랫폼을 지원하며 직관적인 인터페이스를 제공합니다. Xshell은 가정 및 학교 사용자에게 무료 라이선스를 제공하며, 파일 송수신 기능도 지원합니다.

Windows에서 SSH 키를 관리하려면 WSL(Windows Subsystem for Linux)이나 Git Bash와 같은 환경을 사용하는 것이 편리합니다. 개인 키 파일은 일반적으로 C:\Users\YourUser\.ssh\ 또는 WSL 환경의 ~/.ssh/ 경로에 저장됩니다. 개인 키 파일은 접근 권한을 엄격하게 관리하여 다른 사용자가 읽을 수 없도록 설정해야 합니다.

미래의 SSH 접속 문제 예방을 위한 보안 강화 및 키 관리

SSH 접속 불가 상황은 서버 운영에 치명적이므로, 재발 방지를 위한 선제적인 보안 강화와 SSH 키 관리 전략 수립이 필수적입니다. 데이터 백업 및 복구는 ‘보험’을 넘어 디지털 시대의 ‘영속성’을 확보하는 ‘건축 행위’이며, 이는 SSH 접속 관리에도 동일하게 적용됩니다.

SSH 키 기반 인증과 비밀번호 인증 비교

SSH 접속 방식에는 비밀번호 인증과 키 기반 인증이 있습니다. 보안과 편의성을 고려할 때, 키 기반 인증이 훨씬 유리합니다.

구분 비밀번호 인증 SSH 키 기반 인증
보안성 무작위 대입 공격(Brute-force attack)에 취약합니다. 암호화된 키 쌍을 사용하므로 훨씬 강력한 보안을 제공합니다.
편의성 비밀번호를 기억하고 입력해야 합니다. 개인 키만 있으면 비밀번호 입력 없이 접속 가능한 경우가 많습니다. (키 암호 설정 시 입력 필요)
복구 서버 콘솔 접근을 통해 재설정할 수 있습니다. 개인 키 분실 시 복구는 어렵고, 새로운 키 쌍을 생성해야 합니다.

보안을 최우선으로 고려한다면 SSH 키 기반 인증을 우선적으로 사용하고, 비밀번호 인증은 보조 수단으로 활용하거나 비활성화하는 것이 좋습니다.

SSH 포트 변경 및 방화벽 설정

기본 SSH 포트인 22번은 공격에 노출되기 쉬우므로, 다른 포트 번호(예: 2222, 1024~65535 범위 내의 임의의 포트)로 변경하는 것이 보안 강화에 도움이 됩니다. 포트 변경 후에는 반드시 방화벽 설정을 업데이트해야 합니다.

  • SSH 설정 파일 수정: /etc/ssh/sshd_config 파일을 편집하여 Port 22 라인을 원하는 포트 번호로 변경합니다.
sudo nano /etc/ssh/sshd_config
# Port 22
Port 2222
  • 방화벽 설정 업데이트 (Ubuntu UFW 기준): 새로운 SSH 포트를 허용하고 기존 22번 포트 접근을 차단합니다.
sudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp
sudo ufw enable
  • SSH 서비스 재시작: 변경 사항을 적용하기 위해 SSH 서비스를 재시작합니다.
sudo systemctl restart sshd

Root 계정 SSH 접속 비활성화 및 sudo 활용

Root 계정으로 직접 SSH 접속을 허용하는 것은 보안상 매우 위험합니다. 일반 사용자 계정으로 접속한 후 필요시 sudo 명령어를 사용하는 것이 안전합니다. /etc/ssh/sshd_config 파일에서 다음 설정을 변경하여 Root 접속을 비활성화할 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다