상세 컨텐츠

본문 제목

비밀번호 없이 ssh 로그인

개발

by 목장주 2019. 4. 26. 06:30

본문

비밀번호 없이 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

관련글 더보기