사실 이전까지는 그냥 비밀번호를 치고 들어갔다. 개인적으로 그냥 비밀번호를 치고 들어가는 것이 마음에 들기도 하였기 때문인데.
그래도 할 줄 아는 것이 좋으므로 시도를 하게 되었고, 메모를 위해서 글을 남기게 되었다.

1. 개념
키를 통한 접속에 개념은 이런 식이다. 키는 2개의 쌍을 이룬다. 하나는 개인키, 다른 하나는 공개키이다.

개인적인 의견이지만 곰곰히 생각해봤을 때. 개인 키는 영어로 private key 일 것이고, 공개키는 public key 일 것이다.
영어로 변경해보고 다시 해석해보면 개인 키(private key)는 비공개 키. 공개키는 그대로 그냥 공개키다.

이렇게 변경해서 읽어보면 조금 더 이해가 쉽지 않을까 한다.


개인키는 공개해서는 안되는 키이다. 클라이언트가 잘 보관하고 다녀야 되는 것.
반면, 공개키는 이름에서도 느껴지듯이 공개해도 되는 키 이다. 그리고 이 키는 접속할 대상 서버에다가 담아두면 된다.

접속 할 때 개인키로 접속을 하게 되면 이것을 서버에 받아둔 공개키와 매칭을 시켜보고 일치하면 접속을 승인해주는 것이다.


2. 생성 방법

우선 키를 만들어 보자. 이 글에서는 ssh-keygen을 이용할 것 이다. 다른 도구를 이용해도 되고, 각각 자신이 사용하는 원격 세션 도구해서도 생성은 가능 할 것 이다.

키 생성 방법

우선 아래의 명령어를 친다.
# ssh-keygen -t rsa

아래와 같이 출력되는데. 이 키를 생성해서 어디다가 저장할 것 이고 어떤 이름으로 할 것인지 적어주는 것인데.
그냥 엔터를 치면 괄호안의 경로 (/home/계정명/.ssh/id_rsa)에 저장이 될 것 이다.
Generating public/private rsa key pair.
Enter file in which to save the key (/home/계정명/.ssh/id_rsa):

아래와 같은 메시지가 뜨는데. 이는 이 키를에 비밀번호를 지정하는 것이다.
이 키를 사용하여서 접속 시에 키의 비밀번호도 입력해야지 승인이 되는 것 이다. 원하면 설정하고 원하지 않으면 그냥 엔터로 넘기면 된다.
Enter passphrase (empty for no passphrase):

그 다음은 늘상 보는 다시 비번 입력하세요.
Enter same passphrase again:

다음과 같이 출력되면 키 생성 끝. 간단하다.
Your identification has been saved in /home/계정명/.ssh/id_rsa.
Your public key has been saved in /home/계정명/.ssh/id_rsa.pub.
The key fingerprint is:
cc:a2:13:59:89:35:c4:3b:99:79:54:eb:9d:87:a0:dc 계정명@호스트명
The key's randomart image is:
+--[ RSA 2048]----+
|     o+  ..      |
|     o.o.  .     |
|    . o*  o      |
|     o*+.+ o o   |
|    o .oS E + .  |
|     o .     .   |
|    o            |
|     .           |
|                 |
+-----------------+



3. 적용 방법

생성된 파일 중에서 id_rsa는 개인키, id_rsa.pub는 공개키이다.
id_rsa는 접속할 클라이언트에서 보유하고 있고, id_rsa.pub는 접속할 서버에다가 준다.

개인키를 통한 접속의 방법은 프로그램마다 다르다. 다른 포스트를 참고하자.


공개키를 서버에 등록하는 방법은 우선, 공개키를 서버에다가 옮기는 것이 우선이다.
(서버에서 키를 생성했다면 옮길 필요는 당연히 없다. 물론, 개인키를 클라이언트에 옮기셔야겠지만.)
방법은 FTP, SFTP를 사용해도 좋고, 인터넷에 게시한 후 서버에서 wget으로 받거나 하여튼 알아서 하면 된다.

그 다음 이 파일의 내용을 ~/.ssh/authorized_keys에다가 옮겨야 한다.
cat id_rsa.pub > authorized_keys

그 다음 개인키를 지정해서 접속하면 된다.


4. 기타 주의 사항

혹시 뭔가 오류가 난다고 생각되면 다음 사항들을 점검 해보자.

1) .ssh 폴더의 권한은 700
2) authorized_keys 파일의 권한은 600
3) /etc/ssh/sshd_config 파일에 설정을 점검한다.
# vi /etc/ssh/sshd_config
다음 명령어로 파일을 연다.

PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys
다음과 같이 설정이 되어 있어야 하며, 주석처리 되어 있거나, no로 되어있으면 다음과 같이 수정해줘야 한다.

그 이후 sshd 재시작은 필수
# service sshd restart

댓글 작성