[Linux] SSH key 생성 및 패스워드 없이 로그인하기

2021. 5. 4. 18:21 OS/Linux

들어가며

  linux에서 ssh키를 이용해 서버에 접속하는 경우가 많습니다. 특히 분산처리할때는 ssh키를 등록해 놓고 처리를 해야지 패스워드 없이 작업을 원활하게 진행이 가능합니다. 그렇다면 ssh키를 등록한다는 말이 무엇을까요? ssh-key는 내가 너의 비밀번호를 이미 알고 있으니, 다음부터는 너한테 비밀번호 물어보지 않고 접속할께 알겠지? 라는 의미라고 생각하시면 됩니다. 

  등록하는 방법은 서버와 클라이언트로 나누어서 생각하면, 서버는 내가 ssh를 통해 접속하고자 하는 컴퓨터를 의미하고, 클라이언트는 서버에 접속하기 위한 컴퓨터라고 생각하시면 됩니다. 클라이언트에서 ssh키를 생성하고, 생성된 키를 서버에다가 등록해주면 끝입니다. 그럼 생성하고 등록하는 방법에 대해서 알아보도록 하겠습니다.

 

ssh key 생성하기

$ ssh-keygen -t rsa

 

ssh key 등록하기

ssh-keygen으로 생성된 ~/.ssh/rsa.pub의 정보를 authorized_keys에 등록하시면 됩니다. 이때 등록하기 위한 방법은 rsa.pub을 접속하고자 하는 서버에 ~/.ssh/authorized_keys에 넣으면 됩니다. 이때 만약에 id_rsa.pub을 파일을 옮기기 위해서는 scp를 사용하시면 됩니다. 

$ cat id_dsa.pub >> authorized_keys

이렇게 등록을 하고나면 ssh로 접속할때 비밀번호를 물어보지 않고, 바로 접속이 가능합니다. 

 

ssh key 생성 및 등록 한방에

  위에서는 ssh를 생성하고, 등록하는 원리를 이해하시고 실제 하실때는 아래와 같이 하는게 훨씬더 수월합니다.  ssh-copy-id의 명령어를 사용하시면 됩니다. 이 명령어는 내가 접속을 하는 컴퓨터에서 ssh-copy-id를 사용하시면 되고 뒤에 쓰는 계정과 호스트는 서버를 쓰시면 됩니다. 예를 들어서 내가 host1에서 host2를 접속하고 싶을때는 host1에서 

$ ssh-copy-id account@host2

를 입력하면 알아서 host2의 ~/.ssh/authorized_keys에 host1의 ~/.ssh/id_dsa.pub의 내용이 복사가 됩니다. 

이후에는 host1에서 

$ ssh account@host2

를 하시면 비밀번호 없이 접속이 가능합니다.

 

출처 : ourcstory.tistory.com/168?category=630687