# SSH Keygen으로 SSH 키 만들기
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519__
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa__
-f <filePath>
지정된 파일 위치/이름으로 키를 생성한다.
-t <알고리즘>
지정한 암호화 알고리즘을 통해 키를 생성한다.
dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa 값이 간으하다.
-b <비트수>
생성할 키의 비트 수를 설정한다. 일반적으로 3072bit 정도면 충분하다.
Passphrase란?
ssh-keygen을 통해 키를 생성할때 passphrase를 묻는다. 비밀번호인데... 비밀키가 복사되어서 사용된다고 해도 passphrase를 입력하지 않으면 사용할 수 없으므로, 보안성을 확보할 수 있다.
# .ssh 폴더 살펴보기
$ ls -al ~/.ssh
total 54
drwxr-xr-x 1 ASUS 197121 0 2월 2 02:13 ./
drwxr-xr-x 1 ASUS 197121 0 2월 2 02:13 ../
-rw-r--r-- 1 ASUS 197121 0 2월 2 03:05 config
-rw-r--r-- 1 ASUS 197121 2610 12월 17 12:41 id_rsa
-rw-r--r-- 1 ASUS 197121 574 12월 17 12:41 id_rsa.pub
-rw-r--r-- 1 ASUS 197121 5178 1월 31 17:34 known_hosts
-rw-r--r-- 1 ASUS 197121 2602 12월 17 13:30 rsa-gcp-key
-rw-r--r-- 1 ASUS 197121 569 12월 17 13:30 rsa-gcp-key.pub
1. known_hosts 파일
원격으로 접속했었던 모든 호스트에 대한 공개키 정보를 담고 있는 파일이다.
아래처럼 해시된 호스트 이름이 저장되어있는데, 해커가 침입했을때 known_hosts를 읽고 여기에 연결된 기기들을 알아내어 공격해나가는 상황을 피하기 위해서다.
root@s17eab9abfad:~/.ssh# cat known_hosts
|1|9unP28P+4rhm3nDwi9vn5IwKYLwU=|7olJtzA9DO1xwhtdfVeKysAZ8Ro= ecdsa-sha2-nistp256
AAAAE2VjZHNhLXNoYTIxbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHlyWCsdSzAeNsdj3nhoPD/2IYKLHYaW0psD/
Y85XZijw7f39uxIbgJilL0r2Z8Tph/u6I7DCFF7/MIfyKGU1V0=
가장 처음 서버에 접속할때 FingerPrint를 등록하겠냐고 Yes or No로 묻는 프롬프트가 나오는데, 여기서 Yes를 할 경우 known_hosts에 지문이 등록 된다.
2. authorized_keys 파일
이 파일에 공개키를 등록해두면 해당 공개키와 쌍을이루는 개인키를 통한 컴퓨터에서 원격 접속이 가능하다. 일반적으로는 없지만, 직접 만들면 된다.
내 연습용 네이버 클라우드 서버에서는 지정된 pem파일을 통해서만 접속할 수 있었지만, 네이버 서버의 authorized_keys에 내 공개키를 등록함으로서 공개키로도 접속이 가능해진다.
1) 공개키 수동 복사방법 ㅋㅋㅋ
붙여넣을땐 다음 명령어로 붙여넣으면 쉽다.
$ cat >> ~/.ssh/authorized_keys
2) 공개키 자동 복사방법
ssh-copy-id를 이용하면 손쉽게 공개키를 복사할 수 있다.
ssh-copy-id -i <복사할 공개키> user@host
ssh-copy-id -i <복사할 공개키> -p <ssh포트> user@host
3. config 파일
ssh config를 사용하면 간편하게 ssh를 이용할 수 있다. 원래는 원격 호스트에 접속하려면 키파일 지정해주고 IP나 Hostname일일히 붙여넣어가면서 접속해야하지만... config에 미리 등록해두면 내가 원하는 별명으로, 원하는 키를 사용하여 원격 호스트에 접속할 수 있다.
$ vi config
# naver cloud
Host navercloud
HostName xxx.xx.xx.xx
IdentityFile ~/.ssh/navercloud_lou.pem
User lou
Port 1024
User와 Port는 생략가능하다.
이렇게 config를 설정해두고, Host 뒤에 적었던 alias로 간단히 접속할 수 있다.
$ ssh navercloud
# 권장되는 권한설정
원격 접속과 관련된 부분이니 만큼 SSH 관련 파일들의 권한은 엄격히 제한된다. 일부 접속 오류는 파일 권한이 올바르지 않아 발생할 수 있다. 권장되는 파일 권한은 다음과 같다.
~/.ssh | 700 | chmod 700 ~/.ssh |
개인키 (예시 - id_rsa) | 600 | chmod 600 id_rsa |
공개키 (예시 - id_rsa.pub) | 644 | chmod 644 id_rsa.pub |
~/.ssh/authorized_keys | 600 | chmod 600 ~/.ssh/authorized_keys |
~/.ssh/known_hosts | 600 | chmod 600 ~/.ssh/known_hosts |
참고자료
https://opentutorials.org/module/432/3742
http://taewan.kim/post/ssh_key/
https://linuxhint.com/known-hosts-file-ssh-linux/
'프로그래밍 > General' 카테고리의 다른 글
해싱, 암호화에 대한 정리 (0) | 2022.03.30 |
---|---|
RSA 키 생성하기 (공개키/개인키) (0) | 2022.03.18 |
암호학에서 Salt란? 소금이 필요한 이유 (0) | 2022.02.02 |
SSH 터널링 / 포트 포워딩 예시로 알아보기 (1) | 2022.01.31 |
[SSH] UNPROTECTED PRIVATE KEY FILE 해결방법 (0) | 2022.01.31 |