본문 바로가기
Server/Linux

[Linux] ssh-keygen으로 ssh 인증키 생성 방법

by SystemAnswer 2022. 10. 14.
반응형

매번 SSH 접속 시 암호를 입력하는 것은 불편하다. 따라서, Linux 환경에서 암호없이 접속하기 위해서는 ssh 공개키를 생성해서 등록하면 간편하게 접근이 가능하다. 이 장에서는 Clinet 연결을 위해 SSH RSA 공개키(퍼블릭), 비밀키(프라이빗 키) 파일 쌍을 만들어 볼 것이다. 인증키 사용방법은 복잡하지 않다 다양한 글에서 상세한 원리를 설명하다보니 어렵게 느껴질 수 있으나 아래 내용만 파악해도 앞으로 사용하는데 있어서 전혀 지장이 없을 것이다.

 

인증키 사용 원리

1. ssh-keygen으로 공개키/비밀키 한 쌍을 생성한다.

2. 공개키를 접속할 서버의 ~/.ssh/authrized_keys 파일에 키값을 저장한다.

3. 접속을 시도할 Client에서 비밀키를 사용해서 ssh로 접속을 한다.

 

대부분의 인증키 사용 방법은 위의 내용처럼 사용된다. 

비밀키는 오직 나만 소유하고 있어야하며 공개키를 가지고 있는 서버에 접근할때 비밀키로 접근을 하게 된다.

공개키는 누구에게나 공개되어도 상관없는 키로 내가 접근하고 싶은 서버에 해당 공개키를 전달해서 저장시키면 된다.

 

SSH 인증키 생성 방법 (ssh-keygen)

SSH키는 기본적으로 ~/.ssh 디렉토리에 보관된다. ~/.ssh 디렉토리 외 다른 곳에 보관해도 상관없으나 되도록 해당 디렉토리에 보관하도록 하자.

 

ssh-keygen 명령으로 인증키 쌍을 만들어보자

-----

# ssh-keygen -t rsa -b 4096 -C "systemanwer@myserver" -f ~/.ssh/systemanswer_key

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/systemanswer_key
Your public key has been saved in /root/.ssh/systemanswer_key.pub
The key fingerprint is:
SHA256:xY4dksjdlkjlk+GODKSJLKDLSnDLw systemanswer@myserver
The key's randomart image is:
+---[RSA 4096]----+
|=.=ooo.          |
|.=.*..   .       |
|  + = +   o      |
| . + O . +       |
|  + O o S .      |
|   B B .         |
|. = @ =          |
| E * @           |
|. o + .          |
+----[SHA256]-----+

-----

ssh-keygen : 키를 만드는 명령어

-t rsa : RSA 형식으로 키를 생성

-b 4096 : 키의 비트 수는 4096

-C "systemanswer@myserver" : 공개키 파일의 끝에 추가된 주석으로 공개키를 쉽게 식별하기 위해서 사용된다.

-f ~/.ssh/systemanswer_key : 기본 이름(id_rsa)를 사용하지 않으려는 경우 비밀키(프라이빗 키) 파일의 이름을 정한다.

 

SSH 인증키 디렉토리 확인 (~/.ssh)

-----

# ls -la ~/.ssh
total 20
drwx------ 2 root root 4096 Oct 13 14:59 .
drwx------ 6 root root 4096 Sep  5 14:23 ..
-rw------- 1 root root 3389 Oct 14 09:20 systemanswer_key
-rw-r--r-- 1 root root  746 Oct 14 09:20 systemanswer_key.pub

-----

공개키는 파일명에 .pub이 붙게되고 비밀키는 생성한 파일명 그대로 생성이 된다.

공개키와 비밀키를 확인해 보자. 보안상 키 값에 일부는 삭제 했다.

#####

# 공개키 확인
# cat systemanswer_key.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC/B0+eLKXjwo84p1......0rBGU0+QF4P6OSVWdvtOdVp systemanswer@myserver

#####

# 비밀키 확인
# cat systemanswer_key
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAACFwAAAAdzc2gtcn
....
csn81iZ+obL35srRWuVh82jWPhlIySGVI5lCwG9ZjvQ7re2etBdwiOh4SOJJmJ4OLml1Sh
/zXHSmrbuWNudbp7QRtJhGC5BvSB1+B/p5iYWoNbrBlDXqnDcrjlbdSH3PbMVbj0pNUK53
....
hA+X9NgqMiuPH5HwDFLYM8pMhsd6uTX4/ddBkDJCKgj+R4grwSMS3pzCSZPHwjkp9KTE4p
iOt0hkhNV38AAAAUc3lzdGVtYW53ZXJAbXlzZXJ2ZXIBAgMEBQYH
-----END OPENSSH PRIVATE KEY-----

#####

 

Remote SSH 접속 방법

접속할 서버의 authorized_keys파일에 systemanswer_key.pub을 등록한다.

#####

# Target Server에서 설정
# cat /home/systemanswer/.ssh/authorized_keys 
ssh-rsa AAAA......xEF/ccPp+SA3VWAlpBeLebyJbQ7FrwzjkELkOWI8ljDJw== systemanswer@myserver

#####

 

pub 키 등록이 완료되면 로컬에서 비밀키로 ssh 접속을 시도하면 정상적으로 접속이 될 것이다.

#####

# 로컬에서 SSH로 접속
# ssh -i ~/.ssh/systemanswer_key systemanswer@{접속IP}

#####

 

반응형

'Server > Linux' 카테고리의 다른 글

[Linux] CentOS / RHEL Google chrome 설치  (0) 2022.10.13

댓글