시스템/Linux2012. 11. 13. 06:40

SSH 암호없이 접속(SSH-KEYGEN)

 

오늘은 DNS 서버 관리를 위한 스크립트를 만들기에 앞서 우선 서버간 인증 암호없이 접속하는 방법을

간단하게 정리하도록 하겠습니다.

 

SSH를 인증없이 접속하는 방법은 SSH-KEYGEN 명령어를 사용하면 됩니다.

 

SSH 암호없이 접속하기 위하여 간단한 작업절차를 설명하겠습니다.

 

 클라이언트 키생성 -> 클라이언트 키 를 서버에 복사 -> sshd.conf 에서 옵션설정 -> sshd 재시작 -> 접속테스트 성공

 

위처럼 아주 간단합니다.

 

아래는 ssh-keygen 의 간단한 안내페이지 입니다. (자세한 내용은 man ssh-keygen 에서 확인할 수 있습니다.)

 

 

우선 차례대로 해보겠습니다.

1. 클라이언트 에서 ssh-keygen 으로 키 파일을 생성합니다.

  - ssh-keygen -t rsa   명령으로 키를 생성합니다.

    (RSA 와 DSA 의 차이에 대해서 간단하게 보실려면 아래의 더보기를 하시면 됩니다..!)

 

  - 엔터 3번을 누르면 생성이 완료됩니다. (처음 엔터는 키생성 위치, 두번째는 키파일의 암호 입력, 세번째는 암호확인)

  - 인증없이 편하게 접속하기 위한 작업이니 암호는 생략하도록 하겠습니다.

  - 파일 2개가 생성됩니다. id_rsa , id_rsa.pub 각각 키파일과 공개키파일입니다.

 

       클라이언트 화면에서 작업한 화면

 

2. 생성된 키파일을 scp 명령어를 통해 서버 로 전송합니다.

 - 파일 2개중 공개 키파일인 id_rsa.pub 을 서버에 복사합니다.

 - scp 전송할파일명 접속할계정@서버주소:복사할경로(또는 파일명)

   (scp 옵션의 사용방법은 대략 이렇습니다.)

 - 아래의 그림과 같이 전송을 완료하였습니다. (보안상 IP 는 지웠습니다.!)

 

       클라이언트에서 작업한 화면

 

3. 서버로 전송한 키파일을 ssh키 폴더에 authorized_keys 의 이름으로 mv 나 rename 명령으로 변경해줍니다.

 - mv id_rsa.pub .ssh/authorized_keys

   (authorized_keys 라는 이름으로 변경해준 이유는  서버의 sshd.conf 에 

    AuthorizedKeysFile 항목에서 사용할 키파일의 파일명을 지정해놨기 때문입니다.)

      

       서버에서 작업한 화면

 

4. 서버에서 sshd.conf 파일을 수정해줍니다.

 - vi /etc/ssh/sshd.conf

 - sshd.conf 파일안에 AuthorizedKeysFile 항목이 주석처리가 되어있으면 주석해제를 해주고 위에서 별도의 이름으로 키파일을

    변경하였다면 임의로 지정한 파일명으로 변경해주면 됩니다.

   (예 - AuthorizedKeysFile      .ssh/test_keys)

 - sshd.conf 수정 후 sshd 서비스를 재시작 합니다.    service sshd restart   또는  /etc/init.d/sshd restart

    

 

5. 이제 마지막으로 클라이언트에서 서버로 암호없이 접속이 되는지 확인합니다.

 - ssh 접속할계정@접속할서버IP(또는 도메인)

 

※ 설정상의 문제가 없다면 오류 없이 접속이 잘 됩니다.

    다만, .ssh 폴더를 ssh-keygen 으로 생성한게 아니라 단순 mkdir 로 생성한경우 .ssh 폴더의 퍼미션을 rwx------ 로

    변경해줘야 합니다. 또한 authorized_keys 파일의 경우 rw-r--r-- 으로 해야됩니다.

    그 외에도 접속이 안될경우 /var/log/secure 나 /var/log/message 를 참고하면 원인을 파악하여 문제해결이 가능합니다.

 

 

 

Posted by 소울하트