02. 공개키/비밀키 자동 로그인

자동 로그인

비밀번호가 아닌 SSH 공개키/비공개키 인증으로 로그인합니다.

공개키를 관리하는 여러 개의 서버에 저장해두고 하나의 비공개키로 여러 서버에 모두 접속할 수도 있습니다.

윈도우 클라이언트

PuTTYGen 프로그램으로 비공개키와 공개키쌍 생성

  1. PuTTYGen 프로그램으로 비공개키와 공개키쌍을 생성합니다. (Generate a public/private key pair)
  2. 비공개키를 자신의 로컬 컴퓨터에 저장합니다. (Save private key)

서버에 공개키 저장

공개키를 원격의 서버에 ~/.ssh/authorized_keys 파일로 저장합니다. (Public key for pasting into OpenSSH authorized_keys file)

이 때 디렉토리와 파일의 소유권이 중요합니다.

chmod 700 .ssh
chmod 600 .ssh/authorized_keys

만약 위와 다르게 디렉토리와 파일의 소유권이 알맞지 않을 경우 Server refused our key 에러가 발생합니다.

PuTTY 설정

  1. Connection > Data > Login details > Auto-login username 에서 자동 로그인 아이디 입력합니다.
  2. Connection > SSH > Auth > Authentication parameters > Private key file for authentication 에서 비공개키 파일 선택합니다.

맥/리눅스 클라이언트

클라이언트에서 공개키 쌍 생성

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/egg/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/egg/.ssh/id_rsa.
Your public key has been saved in /home/egg/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:EtwXJEriUtG+9BHis/+w9tArVhDL33+yAlHzwdYENkw egg@testing
The key's randomart image is:
+---[RSA 2048]----+
|    +o. ..+. +E+.|
|   o +o+oo  o.=..|
|  . .o+o.+ . + . |
|   .  =.= .   .  |
|     ..=S+ o     |
|      o...+ .    |
|       .o... .   |
|        += .. o .|
|       ooo+  ..+ |
+----[SHA256]-----+

이제 클라이언트에 ~/.ssh/id_rsa 비공개키 파일과 ~/.ssh/id_rsa.pub 공개키 파일 두 개가 생깁니다.

서버에 공개키 저장

$ ssh -p 22111 egg@128.1.128.1 mkdir -p .ssh
$ cat .ssh/id_rsa.pub | ssh -p 22111 egg@128.1.128.1 'cat >> .ssh/authorized_keys'
$ ssh -p 22111 egg@128.1.128.1 "chmod 700 .ssh; chmod 600 .ssh/authorized_keys"

sudo 시스템 비밀번호 묻지 않기

공개키-비공개키 로그인만 사용하고 비밀번호 로그인을 사용하지 않기록 한다면 비밀번호를 묻지 않고 sudo 명령어를 실행하게 할 수도 있습니다.

sudo visudo 명령을 실행하거나 /etc/sudoers 파일을 직접 수정할 수 있습니다.

파일을 열어 끝에 다음 내용을 추가하면 egg 사용자는 더 이상 비밀번호를 입력하지 않아도 바로 sudo 명령어를 실행할 수 있습니다.

egg ALL=(ALL) NOPASSWD:ALL

그리고 이 경우 egg 사용자의 비밀번호를 마찬가지로 무력화할 수 있습니다.

$ sudo passwd -d -l egg

-d 옵션은 사용자의 비밀번호를 비우고 -l 옵션은 비밀번호 잠금 상태가 되어 더 이상 비밀번호를 변경, 설정할 수 없습니다.

최종 수정일시: 2019-02-19 10:02

blog comments powered by Disqus