보통 로컬환경에서 원격서버에 접속할 때, id, password를 통해 SSH 접속하는 경우가 흔하지만, 이 경우는 비대칭키 암호 방식을 이용한 RSA로 접속하는 경우보다 위험하고 더 편리하기 때문에 id, password로 원격서버에 접속하는 것은 지양하는 것이 좋다.
참고로, RSA로 인증하는 방식은 비대칭키 암호 방식 중 한 가지이고, 비대칭키 암호 방식으로서 현재 가장 널리 쓰이는 듯 하다. 비대칭키 암호 방식이란, 공개키(public key), 비밀키(secret key)가 한 쌍이 되어 암호화-복호화하는 방식으로, 비밀키만 노출되지 않는다면, 데이터를 교환할 때 비교적 안전한 방법이다.
정리한 예제의 로컬환경은 맥북, 원격서버는 Ubuntu 18.04이다.
1. 로컬 환경에서 RSA public key, private key를 생성
아래와 같이, 명령어를 입력하면 ~/.ssh 경로에 id_rsa 라는 private key와 id_rsa.pub 라는 public key가 생성된다.
$ ssh-keygen -t rsa -b 4096 -C "my-ssh-key"
// -t: 암호화 방식, -b: bits, -C: comment(구분하기 위한 주석)
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/kay/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): // 그냥 엔터
Enter same passphrase again: // 그냥 엔터
Your identification has been saved in /Users/kay/.ssh/id_rsa.
Your public key has been saved in /Users/kay/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:id3YiVPeKJIefsI3c8Gh8D54z5AX8aNmT7htF4cOla8 my-ssh-key
The key's randomart image is:
+---[RSA 4096]----+
| |
| |
| . + . |
| * @ B o |
| = S X +. o |
| + = + =..o o|
| * @ B .o + |
| = % =. E |
| +.o. |
+----[SHA256]-----+
2. 원격 서버에 public key를 전송
아래와 같이 명령어를 입력하면 원격 서버에서 user의 home 디렉토리에 id_rsa_pub 라는 공개키가 복사된다.
$ scp $HOME/.ssh/id_rsa.pub {user}@{server_address}:id_rsa.pub
3. public key를 authorized_keys 파일에 추가
vim과 같은 편집기로 copy-paste 해도 되지만 '>>' 를 사용하면 파일 아래에 간단히게 덧붙일 수 있다.
$cat $HOME/id_rsa.pub >> $HOME/.ssh/authorized_keys
4. 원격서버에서 sshd_config 수정
$ sudo vi /etc/ssh/sshd_config
/*
/etc/ssh/sshd_config 에서 PubkeyAuthentication,
PasswordAuthentication, ChallengeResponseAuthentication
를 찾아서 아래와 같이 설정해준다.
...
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
...
*/
5. sshd 재시작
원격 서버 sshd를 재시작해 변경된 사항을 적용시킨다.
$ sudo systemctl restart ssh
6. 마무리
로컬 환경에서 원격 서버로 ssh 접속을 해보자.
성공한다면,
$ ssh {server_address}
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-54-generic x86_64)
...
이런식으로 id, password를 묻지 않고 ssh 접속이 될 것이다.
실패한다면,
$ ssh {server_address}
Permission denied (publickey).
이런식으로 출력 될 것이다. 만약 이런 메시지가 출력된다면 위 과정을 차근차근 다시 살펴 봐야 겠다.
'Server Operation' 카테고리의 다른 글
무료 SSL 적용하기 (0) | 2019.07.16 |
---|---|
고정(static) IP 설정하기 on Ubuntu 18.04.1 (0) | 2019.02.11 |
Ubuntu에서 패키지 업데이트, 설치가 되지 않을 때 (0) | 2017.11.05 |