◇ 공부 기록용으로 작성하였으니 틀린 점, 피드백 주시면 감사하겠습니다 ◇
먼저 기본적인 SSH 개념 정리: https://jibinary.tistory.com/114
일단 기본적으로 SSH는 통신을 수학적인 방식으로 암호화하는 방법인데 내부적인 암호화 방식을 이해하기 어렵다...
활용하는 입장에서는 암호화 방식을 깊게 이해할 필요가 없다.
Secure Shell
SSH 키 만드는 법
SSH 키는 PuTTY 와 같은 프로그램으로 쉽게 만들 수 있다.
하지만 보통 개발자들은 터미널에서 명령어 하나로 빠르고 쉽게 만든다. (터미널 쓰는 게 간지지😎)
먼저 로컬 컴퓨터에서 터미널 열기
SSH 키 생성하는 명령어
기본 사용 (RSA 키 생성):
ssh-keygen
옵션과 함께 사용
ssh-keygen <옵션>
🔧 주요 옵션:
- -t <type>: 사용할 알고리즘 지정. 생성하는 키의 암호화 방식이 알고리즘마다 다르다. (RSA타입이 흔히 사용된다.)
- (알고리즘 종류: rsa(*default), dsa, ecdsa, ed25519)
- -b <bits>: 키의 비트 수를 지정. 생성하는 키의 비트 수를 지정한다. (RSA타입이라면 2048bit가 디폴트)
- (일반적으로 2048 또는 4096).
- -C <comment>: 주석으로 이메일 주소나 식별 정보 추가.
- -f <filename>: 키 파일의 이름 및 경로를 지정.
- 그 외에 많은 옵션이 있다.
📔 사용 예시)
ssh-keygen -t rsa -b 2048 -C "any comment" -f C:\Users\jibin.kim\.ssh\kim_key
📔 결과)
파일 경로: C:\Users\jibin.kim\.ssh
kim_key라는 2개의 파일(공개키/비공개)이 생성된 것 확인
🤔 궁금점 1. passphrase
ssh 키를 생성할 때 passphrase라는 걸 입력해야 된다. 이게 뭘까??
passphrase는 일종의 SSH의 비밀번호이다. Private key(개인키) 파일을 보호하기 위한 비밀번호이다.
이를 통해 만약 Private key가 유출되더라도 passphrase 없이는 해당 키를 사용할 수 없게 된다.
권장 값은 10~30 문자이고 생략 가능하다. 그냥 enter를 눌러 넘어갈 수 있다.
🤔 궁금점 2. fingerprint
ssh 키를 생성할 때 아래와 같은 fingerprint라는 게 생성된다. 이게 뭘까??
🤔 fingerprint (핑거프린트, 지문)
fingerprint는 Public Key(공개 키)를 인식하기 위한 지문(고유한 식별자)을 나타낸다.
(fingerprint는 공개키를 기반으로 암호학적 Hash 함수로 작성된다.)
즉 fingerprint는 사용되는 디바이스를 특정하기 위한 값이다
여기서 만들어진 fingerprint 나의 디바이스의 고유 식별자이다.
나의 컴퓨터에서 ssh를 사용해서 다른 서버로 원격 연결할 때, fingerprint 또 생성된다.
이는 나의 컴퓨터의 fingerprint(고유 식별자)가 아닌, 연결하려는 서버 호스트의 fingerprint(고유 식별자)이다.
(이는 서버의 공개 키가 신뢰할 수 있는 것임을 확인하는 데 사용된다. → 중간자 공격(MITM)을 방지할 수 있다.)
여기서 생성된 서버의 fingerprint(고유 식별자)는 나의 컴퓨터 안에 C:\Users\jibin.kim\.ssh\known_hosts
라는 파일에 저장된다.
known_hosts 파일이란: https://jibinary.tistory.com/145
🤔 궁금점 3. randomart
ssh 키를 생성할 때 마지막에 randomart라는 게 생성된다. 이게 뭘까??
Randomart는 SSH 키의 fingerprint를 시각적으로 표현하는 방법이다.
Randomart는 주로 SSH 키의 fingerprint를 빠르게 비교하고 확인하는 데 사용되며, 특히 많은 키를 다룰 때 편리하다.
SSH를 사용하는 입장에서는 별로 안 중요하다.
자세한 내용은 논문 참고: http://users.ece.cmu.edu/~adrian/projects/validation/validation.pdf
'네트워크' 카테고리의 다른 글
[AWS] CORS(Cross-Origin Resource Sharing)란? 아주 쉽게 정리 (feat. S3 버킷) (0) | 2024.02.10 |
---|---|
[네트워크] DNS 레코드 쉽게 정리 (CNAME 과 A Record 의 차이점, TTL) + Alias Record (feat. Route 53, CNAME과 Alias의 차이점) (0) | 2024.01.29 |
[네트워크] HDD와 SDD 비교 및 개념 쉽게 정리 (feat. RAM) (1) | 2024.01.23 |
[네트워크] Telnet(텔넷)이란? 아주 쉽게 정리&설명 (0) | 2024.01.17 |
[네트워크] SSH, SFTP, FTP 아주 쉽게 개념 정리 & 설명 (feat. AWS) (0) | 2023.12.01 |