비밀번호 없이 ssh 로그인
보통 ssh 접속시 아이디와 비밀번호를 넣어서 접속을 한다. 비밀번호 입력 방식은 방식은 편하지만 보안에 취약하다 할 수 있다. 매번 접속시 비밀번호 입력하는 것도 귀찮은 일이고.
ssh 서버는 암호 대신 공개 키를 이용한 접속을 허용한다. 이 방법을 이용하면 매번 암호를 입력하는 수고를 덜 수 있고, 비밀번호 입력 방식에 비해 보안도 덜 취약하다.
ssh의 공개 키 인증 방식
공개 키 (Public Key)로 암호화 한 문자열은 비공개 키 (Private Key)로 복호화가 가능하다. 반대로 비공개 키로 암호화한 문자열은 공개 키로 복호화가 가능하다.
- 클라이언트가 접속을 요청하면 서버는 임의의 문자열을 클라이언트에게 전달한다.
- 클라이언트는 이 문자열을 비공개 키로 사인하여 공개 키와 함께 보내준다.
- 서버는 공개 키가 .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 |