320x100
320x100
SSH Client로 원격 서버에 접속하기 위한 방법으로는 2가지가 있다
1. ID / PW
2. 개인키 인증서
이번에는 개인키 인증서로 사용할 수 있는 파일들에 대해 알아보려고 한다
이 파일들을 알기 위해서는
인코딩 방식에 대해서 알 필요가 있다
- Text (텍스트) 인코딩
- PEM 형식
- ASCII 텍스트 기반의 Base64 인코딩을 사용
- "-----BEGIN ...-----"와 "-----END ...-----" 태그로 감싸인 구조를 가진다
- SSL/TLS 인증서, SSH 키 등에 사용되며, 파일 내용은 텍스트 편집기로 읽을 수 있다
- OpenSSH 형식
- ASCII 텍스트 기반의 Base64 인코딩을 사용
- "-----BEGIN OPENSSH PRIVATE KEY-----"와 "-----END OPENSSH PRIVATE KEY-----" 태그로 감싸인 구조를 가진다
- 파일 확장자가 없는 경우가 일반적이며(예: id_rsa, id_ecdsa), SSH 접속용 개인키에 특화되어 있다
- 주로 SSH 접속에 사용되는 개인키에 사용되며, 파일 내용은 텍스트 편집기로 읽을 수 있다
- Binary (이진) 인코딩
- DER 형식
- ASN.1(Abstract Syntax Notation One) 데이터 구조를 이진 형식(Distinguished Encoding Rules)으로 인코딩
- 주로 SSL/TLS 인증서에 사용되며, 파일 내용은 텍스트 편집기로 읽을 수 없다
- 바로 SSH 접속의 개인키로 사용할 수 없고, openssl 패키지를 이용해서 pem 파일등으로 변환해서 사용한다
- Text(텍스트) && Binary (이진) 인코딩
- PPK 형식
- PuTTY Private Key (.ppk) 형식은 PuTTY SSH 클라이언트에 최적화된 바이너리 형식을 사용한다
- PPK파일에는 공개키와 개인키가 같이 쓰여있으며, 메타데이터를 cat 명령어 등으로 읽어볼 수 있다
- 공개키는 Base64 인코딩으로 저장되고, 개인키는 ASN.1(Abstract Syntax Notation One) 형식으로 저장된다
- 주로 Windows 환경에서 사용되며, 다른 시스템에서 사용하려면 형식 변환이 필요하다
[ 테스트 - 직접 눈으로 확인하기 ]
준비
ssh-keygen, openssl, puttygen 등의 CLI를 통해서 미리 관련 파일들을 생성해놓았다
file 명령어로 어떤 종류의 파일인지 대충 파악할 수 있다
➜ .ssh file private_key.pem
private_key.pem: ASCII text
➜ .ssh file id_rsa
id_rsa: OpenSSH private key
➜ .ssh file der-private-key.der
der-private-key.der: DER Encoded Key Pair, 2048 bits
➜ .ssh file ppk-test.ppk
ppk-test.ppk: PuTTY Private Key File, version 3, algorithm ssh-rsa
1. PEM 파일
head -n 2 test.pem && tail -n 2 test.pem
2. OpenSSH 파일
head -n 2 id_rsa && tail -n 2 id_rsa
3. DER 파일
cat der-private-key.der
cat 명령어로는 볼 수 없는 바이너리 파일..
xxd 명령어로 대충 확인해볼 수 있다
xxd der-private-key.der
4. PPK 파일
cat ppk-test.ppk
pem 파일이 SSH에서도 쓰이고, SSL에서도 쓰이는 등 혼란스러웠다. 한 번쯤은 공부하고 정리하면서 원리를 파악할 필요가 있었다
개인적으로 SSL을 위한 것들만 해도 정말 다양한 포맷과 기술들이 쓰이는 것을 느꼈다..
MacOS user이고 AWS/GCP/Azure 등과 호환되는 pem 포맷을 제일 많이 쓰는 것 같지만, 다양한 포맷의 파일들이 어떠한 목적으로, 어떻게 사용되는지 파악하는 것은 정말 재밌는 일이었다!
이 파일들을 활용해서 어떻게 SSH로 접속하는지에 대한 건 CS쪽 카테고리가 아닌, OS쪽 카테고리에 올리려고 한다
그리고 마지막으로 이 기술들이 잘 wrapping된 프로그램 하나를 소개해보고 마치려고 한다
나중에 HTTPS를 만들기 위한 SSL/TLS 등을 포스팅하기 위한 기반지식이라고 봐도 무방하다
컴퓨터 공부는 해도해도 끝이없군..휴
320x100
'Computer Science > Network & Security' 카테고리의 다른 글
개인키 알고리즘(feat. RSA) (3) | 2023.11.24 |
---|---|
대칭키 / 비대칭키(공개키) 암호화 (0) | 2023.11.20 |
댓글