티스토리 뷰
서버 개발을 하다보면, 터미널에서 SSH 로 접속을 주로 하게 된다.
SSH는 Secure Shell 의 준말이고, 네트워크 상에 다른 컴퓨터에 접속, 명령을 실행할 수 있게 해주는 소프트웨어를 말한다.
SSH는 client, server 간에 연결을 안전하게 하기위해 암호화를 하여 처리한다.
암호화된 데이터를 주고 받을 때는, public / private key 를 사용하는데 public key 는 말 그대로 외부에 공개해도 되는 키이고
데이터를 암호화 하는데 사용한다. private key는 절대 공개되어서는 안되고 public key로 암호화된 데이터를 복호화 하는데 사용한다.
로컬 머신에( SSH client ) private key를 가지고, 리모트 머신( SSH server )에서는 public key를 가지게 된다.
로컬 머신에서 key를 생성하는 방법은 아래와 같다.
$ ssh-keygen -m PEM -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/goatee/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/goatee/.ssh/id_rsa.
Your public key has been saved in /Users/goatee/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:3n4XLK7mfSSzfEn3mFANTveXRV84LzkvoW+SW71Bu3c goatee@C02XHD8VJG5J
The key's randomart image is:
+---[RSA 4096]----+
| oo|
| = =|
| o B=|
| B.=|
| S + *.|
| . . * B.+|
| . .o @.Xo|
| ...B.X E|
| o+ooB oo|
+----[SHA256]-----+
$ ~ ls -alh ~/.ssh
total 32
drwx------ 6 goatee staff 192B 7 27 18:58 .
drwxr-xr-x+ 171 goatee staff 5.3K 7 27 18:58 ..
-rw-r--r--@ 1 goatee staff 128B 7 11 2019 config
-rw------- 1 goatee staff 3.2K 7 27 18:58 id_rsa
-rw-r--r-- 1 goatee staff 750B 7 27 18:58 id_rsa.pub
-rw-r--r-- 1 goatee staff 2.6K 6 3 19:02 known_hosts
ssh-keygen 을 사용하여 rsa 암호화방식으로 PEM 포맷으로 키를 생성한다.
MAC Catalina 버전에서 암호화 방식을 지정해주지 않으면 OPENSSH( ed25519 ) 으로 암호화 된다.
ssh-keygen 명령어 이후에는 prompt가 뜨는데 그냥 엔터만 눌러, 기본값을 사용하면 된다.
key가 생성 되고 나면, .ssh 폴더에 id_rsa / id_rsa.pub 라는 파일이 생긴다.
id_rsa 는 private key, id_rsa.pub는 public key 이다.
id_rsa 파일을 보면, 아래와 같은 포맷으로 되어있고, --- --- 사이에 암호화 방식이 적혀있다.
-----BEGIN RSA PRIVATE KEY-----
MIIJKgIBAAKCAgEA4cKNMAc2Bg+W17CVrCNC40vFcxFj/LoI46SVuz4F4i9D8B9/
BSqN8dodQ4A5730mu9ZvZAkBZUXRZWc4PSUcdXU1x8XmPeYh2AH9kBk6xya47OPE
bYt8cBspFqgGvoZyLfr3tDSP8AQ45X56MkcsmojLEwEq/vVBAB9HC6eqiUy9arB2
1QEpmIpuJbG+Wu7LeF8JFKorCoZlJfQCKUbSb3e2CSVSkMOL6JM689MqKaJJPg==
-----END RSA PRIVATE KEY-----
id_rsa 파일은 아래와 같은 형식이고, 첫줄은 암호화 방식 마지막 == 뒤에는 라벨이 적혀있다.
라벨은 말그대로 public key에 라벨링해서 어떤 key인지 적어둔것이라 생각하면 된다.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDhwo0wBzYGD5bXsJWsI0LjS8VzEWP8ugjjpJW7PgXiL0PwH38FKo3x2h1DgDnvfSa71m9kCQFlRdFlZzg9JRx1dTXHxeY95iHYAf2QGTp+lAOtkoTiFsYGpBw0Jw== goatee@C02XHD8VJG5J
이렇게 생성된 public key 를 접속할 서버에 등록 하고 나면, 로컬머신에서 ssh 로 접속을 시도하면 private key를 이용해 secure 연결이 만들어지고 안전하게 통신을 주고 받을 수 있게 된다.
'Tools' 카테고리의 다른 글
[ Git ] Ignore (0) | 2020.08.24 |
---|---|
[ IntelliJ ] Gradle 프로젝트 - out, build 폴더 (0) | 2020.08.24 |
[ IntelliJ ] 에디터에서 HTTP 테스트 하기 (0) | 2020.06.01 |
[ Postman ] SOCKS proxy 적용 (0) | 2020.05.20 |
[ IntelliJ ] Springboot gradle project 생성하기 (0) | 2020.05.20 |
- Total
- Today
- Yesterday
- Linux
- tomcat
- mac
- intellij
- Spark
- elasticsearch
- plugin
- Kibana
- Size
- Container
- JPA
- Git
- Log
- SpringBoot
- apm
- docker
- scala
- logstash
- error
- Java
- Index
- AWS
- install
- spring
- maven
- gradle
- spring boot
- JSON
- Filter
- Postman
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |