openssl을 사용해 PEM 형식의 키를 만들고, 이 키로 SSH에 로그인하는 방법을 안내해 드릴게요.
일반적으로 SSH 키는 ssh-keygen으로 만들지만, openssl은 더 다양한 암호화 옵션을 제공하여 특정 환경에서 필요할 때가 있습니다. 과정은 ssh-keygen과 유사하게 키 생성, 서버에 공개키 등록, 클라이언트로 접속 순서로 진행됩니다.
1단계: OpenSSL로 PEM 키 생성 (내 PC 💻)
먼저 내 PC(클라이언트)에서 OpenSSL 명령어로 개인키와 공개키를 생성합니다.
RSA 개인키 생성 (PEM 형식)
터미널에서 아래 명령어를 실행하여 2048비트 RSA 개인키 private-key.pem 파일을 생성합니다.
Bash
openssl genpkey -algorithm RSA -out private-key.pem -pkeyopt rsa_keygen_bits:2048
개인키에서 공개키 추출
방금 만든 개인키를 이용해 쌍이 되는 공개키 public-key.pem 파일을 추출합니다.
Bash
openssl rsa -pubout -in private-key.pem -out public-key.pem
⚠️ 중요: SSH 서버는 OpenSSL의 PEM 형식 공개키를 바로 인식하지 못합니다. SSH에서 사용하는 한 줄 형식으로 변환해야 합니다.
공개키를 SSH 형식으로 변환
아래 명령어로 public-key.pem을 SSH authorized_keys 파일에 추가할 수 있는 형식으로 변환하고, public-key.ssh 파일에 저장합니다.
Bash
ssh-keygen -f public-key.pem -i -m PKCS8 > public-key.ssh
2단계: 서버에 공개키 등록 (서버 🖥️)
이제 변환된 SSH 공개키(public-key.ssh)의 내용을 접속하려는 서버에 등록합니다.
내 PC에서 변환된 공개키 내용 확인 및 복사
Bash
cat public-key.ssh
ssh-rsa AAAA...로 시작하는 한 줄의 텍스트 전체를 복사합니다.
서버에 접속하여 authorized_keys 파일에 추가
비밀번호로 서버에 접속한 뒤, 복사한 내용을 ~/.ssh/authorized_keys 파일에 추가합니다.
Bash
# 서버에서 실행
echo "여기에-복사한-공개키-내용을-붙여넣기" >> ~/.ssh/authorized_keys
서버의 파일 권한 설정 (필수)
SSH 서버는 보안을 위해 엄격한 권한 설정을 요구합니다.
Bash
# 서버에서 실행
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
3단계: PEM 키로 SSH 로그인 (내 PC 💻)
모든 준비가 끝났습니다. 이제 -i 옵션으로 생성했던 private-key.pem 개인키를 지정하여 서버에 접속합니다.
개인키 파일 권한 설정
내 PC에 있는 개인키 파일의 권한을 600으로 설정해야 합니다.
Bash
chmod 600 private-key.pem
SSH로 서버 접속
Bash
ssh -i private-key.pem [사용자명]@[서버_주소]
예시: ssh -i private-key.pem ubuntu@192.168.0.10
이제 비밀번호 없이 PEM 키로 서버에 안전하게 로그인할 수 있습니다.