본문 바로가기
카테고리 없음

비밀번호 없이 SSH 접속 하기 - SSH Key 로그인

by 왕 달팽이 2019. 2. 21.
반응형

SSH를 이용해서 서버에 접속할 때 비밀번호를 사용하지 않고 바로 로그인하는 방법이 있다. SSH Key를 이용한 방법으로 ssh 클라이언트를 이용해 호스트로 접속할 때마다 비밀번호를 눌러야하는 수고를 덜 수 있다. 특히 스크립트로 클러스터 호스트들을 세팅하는 작업에서 많이 사용된다.

 

SSH Key를 이용한 접속 방식

SSH Key는 RSA 같은 알고리즘을 이용해 생성할 수 있다. SSH Key는 공개키(Public Key)와 개인키(Private Key) 쌍으로 구성된다. 개인키와 공개키는 열쇠와 자물쇠 같아서 서로 쌍을 이루는 경우에만 인증을 받을 수 있다. 두 개의 키중에 개인키는 로컬 머신에 저장되며 공개키는 접속하려는 리모트 호스트에 위치시켜 준다.

 

 

SSH를 이용해 접속을 시도하면 ssh 클라이언트가 자신이 구동중인 로컬 머신에 설치되어 있는 개인키를 들고 서버로 찾아간다. ssh 서버에 개인키를 넘겨주면서 접속을 허용해달라고 요청을 하면, ssh 서버는 자신이 가지고 있는 공개키 중, 넘겨받은 개인키와 대응되는 것이 있는지 확인하고 접속을 허용해준다.

 

로컬 머신에 설치되어 있는 개인키가 비밀번호 역할을 수행하게 된다.

 

SSH Key 생성

SSH Key를 이용한 로그인을 가능하게 하려면 우선 공개키와 개인키 쌍을 만들어줘야한다. 리눅스에서는 ssh-keygen이라는 프로그램을 사용하여 공개키-개인키 쌍을 만들어 낼 수 있다. 

 

$ ssh-keygen -t rsa

Generating public/private rsa key pair. 

Enter file in which to save the key (): 

Enter passphrase (empty for no passphrase): 

Enter same passphrase again: 

Your identification has been saved in .

Your public key has been saved in . 

The key fingerprint is:

....

 

Enter를 계속 누르면 기본 설정으로 생성이 된다.

 

"Enter file in which to save the key"에 입력한 경로에 생성된 키 쌍이 저장된다. 아무값도 입력하지 않은 경우 홈 디렉토리 아래 .ssh 디렉토리에 저장된다. 

 

"Enter passphrase (empty for no passphrase)"에 입력한 값은 개인키를 암호화하는데 사용된다. 아무것도 입력하지 않으면 개인키를 암호화하지 않으며 자동 로그인에서는 아무것도 입력하지 않아야 한다. (개인키를 암호화하지 않으면 보안문제가 발생할 수 있다. 개인키 파일을 가지고 있는 사람이라면 누구든 바로 접속이 가능하기 때문이다)

 

SSH Key가 생성된 디렉토리에 가보면 id_rsa, id_rsa.pub 두 개의 파일이 생성된다. id_rsa 파일이 개인키에 해당하며 id_rsa.pub 파일이 공개키에 해당한다. id_rsa 파일은 개인키 파일로 다른 유저에게 노출되어서는 안되는 파일이다. 비밀번호가 노출되는 것과 같은 효과이므로 퍼미션 관리를 확실하게 해줘야한다. 일반적으로 .ssh 디렉터리는 700, id_rsa 파일은 600, id_rsa.pub 파일과 기타 공개되어도 되는 파일들은 644로 설정해놓는다.

 

 

SSH Key 설치

이제 생성된 id_rsa.pub 파일을 접속하려고하는 리모트 호스트에 설치해줘야한다. 원격 호스트의 $HOME/.ssh/authorized_keys 파일에 공개키를 등록시켜주면된다. 

 

우선 원격 호스트로 공개키 파일을 복사해준다.

 

$ scp $HOME/.ssh/id_rsa.pub @:id_rsa.pub

 

scp나 rsync 등을 이용해 원격 호스트에 파일을 복사해놓는다.

 

원격 호스트에 비밀번호를 입력하고 들어가보면 홈 디렉토리에 id_rsa.pub 파일이 생성되어 있을꺼다. 

 

$ cat $HOME/id_rsa.pub >> $HOME/.ssh/authorized_keys

 

authorized_keys 파일은 하나 이상의 공개키를 가지고 있는 파일이다. ssh 클라이언트가 개인키를 들고 로그인시켜달라고 하면 ssh 서버는 이 authorized_keys 파일에서 ssh 클라이언트가 가지고 온 개인키에 대응되는 공개키가 있는지 확인해 보고 접속을 허용할지 여부를 결정하게 된다.

 

 

ssh 접속하기

이제 ssh를 이용해 공개키를 설치한 Remote 호스트에 접속해본다. 

 

$ ssh

 

만약 ssh-keygen으로 만든 키를 기본 저장경로가 아닌 별도의 저장경로에 설치했다면 -i 옵션으로 경로를 지정할 수 있다. 

 

$ ssh -i

 

접속할 때 문제가 발생한다면 -v 옵션을 추가하여 상세 정보를 확인할 수 있다.

 

반응형

댓글