나머지...

SSH 공개키 인증을 사용하여 암호 없이 편리하게 원격 호스트에 접속하기-!

by 허서진 posted Jan 03, 2020

SSH 키는 공개 키 암호화 방식 및 인증 확인 응답 인증을 사용하는 SSH 서버에 대해 자체 식별하는 방식입니다.


비공개 서버에 접속하기 위해서는 인증절차를 거쳐야 하는데요, 기존에 비밀번호를 네트워크를 통해 보내는 비밀번호 인증은 네트워크 상에서 ID/비밀번호가 그대로 노출되는 문제가 있고, 접속할 때마다 입력해야 하는 번거로움이 있습니다.
SSH 키는 이와 달리 공개키 암호 방식을 사용하여 서버에서 인증받을 수 있으며, 암호를 생략하고 원격 호스트로 접속할 수 있습니다.

 

과정은 아래와 같습니다.

1. 로컬 호스트에 키 생성(private key, public key)
2. 원격 호스트에 public key 복사(public key 만으로는 복호화할 수 없기 때문에 여러 서버에 복사해도 무관)
3. 로컬 호스트에서 원격 호스트로 ssh 접속
4. 원격 호스트에서 public key로 암호화 된 정보를 로컬 호스트에게 주고, 로컬 호스트는 private key와 원격 호스트의 public key를 이용하여 복호화 수행
5. 인증 완료 시 암호 입력 필요 없이 접속 가능

 

실제 명령어 수행 과정을 살펴보도록 하겠습니다.


1. 로컬 호스트에 키 생성

ssh-keygen 명령어를 이용해 private/public 키를 생성합니다.
ssh-keygen 명령어에는 다양한 옵션이 있지만, 아무 옵션을 주지 않아도 키를 생성할 수도 있습니다.
이 글에서는 간단한 옵션만을 사용해 키를 생성해 보겠습니다.

 

1) private/public key 생성

[cubrid@node1 ~]$ ssh-keygen -t rsa -b 4096                             //rsa 타입으로 4096비트 사용
Generating public/private rsa key pair.
Enter file in which to save the key (/home/cubrid/.ssh/id_rsa):         //키 생성 위치 지정, 기본 위치는 ~/.ssh로, 엔터입력 시 기본위치에 생성됨
Enter passphrase (empty for no passphrase):                             //키에 접근할 때마다 추가로 암호를 요구하도록 설정하는 부분, 엔터 입력 시 추가 암호 요구 하지 않음
Enter same passphrase again:
Your identification has been saved in /home/cubrid/.ssh/id_rsa.
Your public key has been saved in /home/cubrid/.ssh/id_rsa.pub.
The key fingerprint is:
a1:fd:7b:00:68:46:03:80:b7:8f:53:09:da:6b:d8:40 cubrid@node1
The key's randomart image is:
+--[ RSA 4096]----+
| .....           |
|.Eo   o          |
|.+ o o o.        |
|o o o +o..       |
| + = o. S.       |
|. * .    ..      |
| . .      ..     |
|           ..    |
|          ..     |
+-----------------+

 

2) private/public key 생성 확인

[cubrid@node1 ~]$ ls -l ~/.ssh
-rw-------.  1 cubrid cubrid 3243 Jan  3 12:17 id_rsa                //private key 파일
-rw-r--r--.  1 cubrid cubrid  734 Jan  3 12:17 id_rsa.pub            //public key 파일


2. 로컬 호스트의 public key를 원격 호스트에 복사

ssh-copy-id 명령어를 이용해 로컬 호스트에서 생성한 public key를 원격 호스트에 복사합니다.

1) 로컬 호스트에서 원격 호스트로 public key 복사

[cubrid@node1 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub node2
The authenticity of host 'node2 (192.168.247.101)' can't be established.                 //특정 호스트에 처음으로 ssh 접근을 할 경우 해당 호스트에 접근하는 것이 맞는지 yes/no로 확인
RSA key fingerprint is ea:8c:84:1b:46:1d:b6:37:f4:bf:fc:87:25:45:04:a3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'node2,192.168.247.101' (RSA) to the list of known hosts.     //로컬 호스트의 ~/.ssh/known_hosts에 해당 호스트가 등록되면 이후부터는 물어보지 않는다.
cubrid@node2's password:                                                                 //원격 호스트 패스워드 입력
Now try logging into the machine, with "ssh 'node2'", and check in:

  .ssh/authorized_keys                                                                   //원격 호스트의 ~/.ssh/authorized_keys에 로컬 호스트에서 전달한 public key가 복사됨

to make sure we haven't added extra keys that you weren't expecting.


2) 원격 호스트에서 public key가 정상적으로 복사되었는지 확인

[cubrid@node2 ~]$ ls -al ~/.ssh/authorized_keys
-rw-------. 1 cubrid cubrid 734 Jan  3 12:34 /home/cubrid/.ssh/authorized_keys


3. SSH를 통해 원격호스트 접속

[cubrid@node1 ~]$ ssh node2
Last login: Fri Jan  3 12:47:31 2020 from node1                                           //암호를 묻지 않고 정상적으로 접속이 완료됨
[cubrid@node2 ~]$                       

 

 

 

 

참고

https://marobiana.tistory.com/53

https://itzone.tistory.com/694