이번 시간에는 서버에 key 파일을 가지고 로그인 하게끔 설정을 해 보도록 하겠습니다. setting 파일도 하나 다룰 겸 말입니다.

 


 먼저, 제 로컬에는 ssh 클라이언트와, git for windows, cygwin이 있습니다.

 

 

 ssh-keygen -t rsa는 rsa 알고리즘으로 public key와 private key를 생성합니다. 저는 C:\Users\cho의 .ssh 폴더에 생성했는데요. 이들을 모두 cygwin의 home 폴더에 그대로 복사했습니다.

 

 

 다음에 권한 설정을 하나씩 해 주어야 하는데요. private, public 키가 한 쌍을 이루고 있어요. 이들은 각각 id_rsa와 id_rsa.pub인데요. 이 중에서 id_rsa는 나 말고 다른 사람이 보면 안 됩니다. 나 외에 다른 사람들에게는 어떠한 권한도 안 주면 되겠군요. .ssh 폴더도 나에게만 권한을 준 것을 볼 수 있습니다.

 

 다음에 id_rsa.pub는 644 권한을 주었습니다. 

 

 

 제 홈 디렉토리에 .ssh 폴더를 새로 생성하였습니다. 그리고 그 폴더 밑에 authorized_keys 라는 것도 추가하였습니다.

 

 

 이제 id_rsa.pub를 rz 명령어를 이용해서 서버에 보내겠습니다.

 

 

 그리고 ls -ail 명령어를 입력해 보면, 아래와 같이 id_rsa.pub가 들어가 있음을 알 수 있습니다. 우리가 어떤 일을 한 것인지 정리를 해 보겠습니다. local에서 ssh-keygen -t rsa를 이용해서, private와 public 키 1쌍을 생성하였습니다. 리고, public 키인 id_rsa.key를 제 서버의 /.ssh/authorized_keys에 보냈습니다.

 


 ssh로 접속을 하려면, 서버에 sshd (혹은 ssh server)가 실행중이여야 합니다. 우분투에는 /etc/ssh에 sshd_config가 있는데요. 이 파일을 보도록 하겠습니다.

 

 일단 3개 옵션을 보겠습니다. permitRootLogin이 있는데요. 이것은 no로 설정하겠습니다. 이것은 ssh에서 Root 계정으로 직접 로그인하는 것을 막는 옵션입니다. 그리고 pubKeyAutientication이 있는데요. 이것은 Yes로 설정하겠습니다. 이는 공개키 기반으로 인증하겠다는 것을 의미합니다.

 

 그리고 AuthorizedKeysFile의 주석만 풀어봅시다. 그리고, PasswordAuthentication 옵션이 하나 있는데요.

 

 

 이것도 no로 설정해 보겠습니다. permitEmptyPasswords no 부분도 주석을 풀면 좋긴 하겠네요. 일단 이 정도만 보고, 나머지 옵션들에 대해서는 천천히 보도록 하겠습니다. 그런데, 여기까지 하시고, 서버를 재시작 하면, key 파일을 못 찾는다는 것을 알 수 있습니다. 그야 당연한 것이, 저는 .ssh/authorized_keys에 저장을 한 게 아니기 떄문입니다.

 

 

 public key 파일의 경로를 추가해 주고, 다시 sshd 서버를 재시작 해 봅시다.

 

 

 로컬에 있었던 id_rsa.pub 키를 가지고 접속해 보면, 잘 접속됨을 알 수 있습니다.

 

 

 그러면 로컬에 있는 private 키 하나를 삭제하면 어떻게 될까요?

 

 

 id_rsa 파일을 열 수 없다고 뜹니다. 하나 알 수 있는 것은 함부로 지우면 안 된다는 것입니다.