본문 바로가기
개발

비밀번호 없이 ssh 로그인

by 목장주 2019. 4. 26.
반응형

비밀번호 없이 ssh 로그인

보통 ssh 접속시 아이디와 비밀번호를 넣어서 접속을 한다. 비밀번호 입력 방식은 방식은 편하지만 보안에 취약하다 할 수 있다. 매번 접속시 비밀번호 입력하는 것도 귀찮은 일이고.

ssh 서버는 암호 대신 공개 키를 이용한 접속을 허용한다. 이 방법을 이용하면 매번 암호를 입력하는 수고를 덜 수 있고, 비밀번호 입력 방식에 비해 보안도 덜 취약하다.

ssh의 공개 키 인증 방식

공개 키 (Public Key)로 암호화 한 문자열은 비공개 키 (Private Key)로 복호화가 가능하다. 반대로 비공개 키로 암호화한 문자열은 공개 키로 복호화가 가능하다.

  1. 클라이언트가 접속을 요청하면 서버는 임의의 문자열을 클라이언트에게 전달한다.
  2. 클라이언트는 이 문자열을 비공개 키로 사인하여 공개 키와 함께 보내준다.
  3. 서버는 공개 키가 .ssh/authorized_keys에 등록되어있는지 확인한 후 공개키를 이용하며 문자열을 해독하여 인증을 종료한다.

위의 방식은 클라이언트는 비공개 키와 공개 키를 만들어 공개 키를 ssh 서버에 저장해 두었다고 가정한다. 이 작업이 선행되지 않으면 공개 키 기반 인증이 작동하지 않는다. 즉, 최초 1회는 암호를 이용한 접속을 하여 공개키를 서버에 저장해 두어야 한다. 혹은 관리자가 서버를 설치할 때 id_rsa 파일을 복사해 둬야 한다.

공개 키, 비공개 키 생성

다음 명령어를 입력해 키를 생성한다.

$ ssh-keygen

 

-t 옵션을 주지 않으면 rsa 알고리즘으로 키를 생성한다.

아래와 같이 저장 장소, passphrase를 묻는다. passphrase는 비밀 키를 한 번 더 암호화 할 때 사용되는 문자열이다. passphrase를 사용한다면 서버 접속 시 아래와 같이 passphrase를 입력해야 한다.

$ ssh username@domain.name
Enter passphrase for key '~/.ssh/id_rsa':

 

passphrase를 사용하지 않았을 때 비공개 키 파일인 id_rsa가 유출이 된다면 해커는 암호 임력 없이도 서버에 접속할 수 있다.

Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ~/.ssh/id_rsa.
Your public key has been saved in ~/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:65oeh6ZHafO8XSKG3omc53VKR11OCImgB/78TywRVbo username@domain.name
The key's randomart image is:
+---[RSA 2048]----+
|      . .. .oo.  |
|     . o  ...o . |
|      o . . . . o|
|       +   . o + |
|       .S . E . .|
|      =o o +     |
|     o=+= * *    |
|     =.X+* X     |
|    .oO+*.o .    |
+----[SHA256]-----+

 

id_rsa.pub를 authorized_keys에 추가

sftp를 이용해도 되지만, 터미널에서 명령어 2줄 이면 가능하다.

athorized_keys 생성

접속하고자 하는 서버에 authorized_keys 파일이 없다면 생성해주자.

$ ssh username@domain.name mkdir .ssh

 

id_rsa.pub 추가

$ cat ~/.ssh/id_rsa.pub | ssh username@domain.name 'cat >> .ssh/authorized_keys'

 

퍼미션 설정

.ssh 폴더와 authorized_keys 퍼미션을 적절하게 바꿔줘야 로그인이 가능하다.

$ ssh username@domain.name 'chmod 700 .ssh; chmod 640 .ssh/authorized_keys'

 

설정 완료

이제 password 없이 서버에 접속이 가능하다.

반응형

'개발' 카테고리의 다른 글

Plex에 Daum Movie Plugin 설치  (0) 2019.05.15
Install Docker on Ubuntu  (0) 2019.04.26
Install SSH Server on Ubuntu  (0) 2019.04.26
Spring Boot Security - DB를 이용한 인증  (0) 2018.11.21
Spring Boot Security - 접근 제어  (0) 2018.11.10