# Infra Servers-SSH Key 구성

TASK DESCRIPTION

SSH Key를 생성합니다.
각 VM을 ssh로 쉽게 접근하게 하기 위해 SSH public key를 각 VM에 복사합니다.

# SSH Key 생성

Terminal 또는 ssh명령으로 bastion VM을 접근합니다.
Test용 SSH Key를 생성합니다.

$ ssh-keygen -b 4096 -t rsa

현재 user의 HOME디렉토리 하위에 '.ssh'라는 디렉토리가 생깁니다.
그 디렉토리에 private key파일인 id_rsa와 public key파일인 id_rsa.pub가 생성됩니다.

# Public SSH Key 복사

ssh로 접근할 각 VM에 public ssh key파일을 복사합니다.

$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@<대상 VM IP>

참고
대상 VM node에는 .ssh/authorized_keys라는 파일로 복사됩니다.

TIP
다른 Terminal에서 현재 작업중인 bastion VM도 암호 없이 접근하려면
위 public key파일 복사를 bastion VM도 해야 합니다.

$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.168.0.190
$ ls -al 
합계 20
drwx------. 2 root root   94  5월 28 16:23 .
dr-xr-x---. 6 root root  210  5월 28 16:10 ..
-rw-------. 1 root root  738  5월 28 16:23 authorized_keys
-rw-r--r--. 1 root root  255  5월 28 16:12 config
-rw-------. 1 root root 3243  5월 28 16:10 id_rsa
-rw-r--r--. 1 root root  738  5월 28 16:10 id_rsa.pub
-rw-r--r--. 1 root root  700  5월 28 16:23 known_hosts

위와 같이 'authorized_keys'파일이 생겨야 다른 Terminal에서  
암호없이 이 VM을 접근할 수 있습니다.   

# Config파일 생성

각 VM의 정보를 담고 있는 Config파일을 생성합니다.

Host <VM alias>
    HostName <VM IP>
    Port <SSH PORT>
    User <User ID>
    IdentityFile <Private SSH Key파일 경로>

예제)

Host gateway
    HostName 172.168.0.187
    User root
    IdentityFile ~/.ssh/id_rsa
Host network
    HostName 172.168.0.189
    User root
    IdentityFile ~/.ssh/id_rsa
Host storage
    HostName 172.168.0.188
    User root
    IdentityFile ~/.ssh/id_rsa

Local Mac에서 Config설정

Mac에서 bastion서버를 쉽게 접근하기 위해
아래 예와같이 Local Mac의 ~/.ssh/config파일을 생성합니다.
미리 private key파일은(~/.ssh/keys/seromi_rsa)다운로드 해야 합니다.

예제)

$ mkdir -p ~/.ssh/keys
$ cd ~/.ssh/keys 
$ scp -P 19022 root@61.78.152.243:~/.ssh/id_rsa .
$ cd ~/.ssh
$ vi config 

Host seromi
    HostName 61.78.152.243
    Port 19022
    User root
    IdentityFile ~/.ssh/keys/seromi_rsa

# 테스트

  • bastion VM에서 테스트 ssh나 scp명령 사용 시 이제는 암호를 묻지 않고 바로 접근이 됩니다.

  • Mac에서 테스트 Mac에 config파일을 만들었다면, 아래와 같이 ssh로 bastion서버 접근이 되는지 테스트 합니다.