자동 로그인
비밀번호가 아닌 SSH 공개키/비공개키 인증으로 로그인합니다.
공개키를 관리하는 여러 개의 서버에 저장해두고 하나의 비공개키로 여러 서버에 모두 접속할 수도 있습니다.
윈도우 클라이언트
PuTTYGen 프로그램으로 비공개키와 공개키쌍 생성
- PuTTYGen 프로그램으로 비공개키와 공개키쌍을 생성합니다. (Generate a public/private key pair)
- 비공개키를 자신의 로컬 컴퓨터에 저장합니다. (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 설정
- Connection > Data > Login details > Auto-login username 에서 자동 로그인 아이디 입력합니다.
- 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
옵션은 비밀번호 잠금 상태가 되어 더 이상 비밀번호를 변경, 설정할 수 없습니다.