OS/Linux

ssh-keygen 사용법

아르비스 2011. 8. 12. 15:37

참조 : http://jwmx.tistory.com/272

         http://blog.naver.com/paradox1573/40087216505

 

ssh접속은 아이디와 암호를 타이핑해서 로그인하는 방법과 인증서를 이용해서 로그인하는 방법이있다. ssh-keygen은 인증서를 이용한 로그인에 사용되는 인증서를 만드는 프로그램이다. 단, sshd가 인증서로그인을 허용해야 한다. 따라서 /etc/ssh/sshd_config에서 아래와 같은 라인이 주석해제 되어있는지 확인해야한다.

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile     .ssh/authorized_keys #홈디렉토리에서의 공개키위치

인증서를 이용해서 로그인하는 과정은 다음과 같다.

SSH를 이용하여 (1) 서버에 접속하게 되면 (2) SSH는 개인키를 서버에 제시하게되고, (3)서버는 .ssh 에 있는 authorized_keys 파일 값(공개키)을 비교 확인하여 로그인을 허가하게 된다.

따라서 클라이언트의 개인키와 서버의 공개키에 의해서 로그인이 이루어 진다.

 

결과적으로 클라이언트에서 키를 생성하던 서버에서 키를 생성하던 클라이언트에는 개인키를 그리고 서버에서는 공개키를 가지고만 있으면 된다.

키의 종류에는 rsa와 dsa가 있는데 서버에서 ssh2를 지원한다면 rsa 나 dsa를 사용하고 ssh1만지원한다면 rsa1을 사용하여야 한다.

아래에서 보여주는 예제는 ssh2를 지원하는 서버와의 통신을 위한 인증서를 만드는것이다.

[uddum@sscc ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/uddum/.ssh/id_rsa):개인키가저장되는곳
Enter passphrase (empty for no passphrase):개인키비밀번호
Enter same passphrase again:개인키비밀번호확인
Your identification has been saved in /home/uddum/.ssh/id_rsa. 개인키위치
Your public key has been saved in /home/uddum/.ssh/id_rsa.pub. 공개키위치
The key fingerprint is:
29:55:68:c3:66:26:62:e4:69:92:97:76:fc:d8:a8:6e uddum@도메인

비밀번호 없이 인증서로만 들어가고 싶으면 개인키비밀번호부분에서 그냥 엔터만 치면된다. 단, 보안에 주의해야한다. 아니면 비밀번호를 설정하고 ssh-agent를 이용해서 로그인시 그냥 들어가는 방법이 있다. 자 어쨋든 개인키와 공개키가 생성되었다. 클라이언트에서 만들었다면 id_rsa.pub파일을 서버로 전송시키고 서버에서 만들었다면 id_rsa파일을 클라이언트로 전송시키자.

 

여기서 주의해야 할점은 서버에서의 인증서 위치는 로그인되는 홈디렉토리기준으로 sshd_config의 AuthorizedKeysFile에 적혀있는 경로이다. 따라서 sshd_config에서 아무것도 변경하지않고 인증서부분만 주석을 해제했다면 서버에서의 공개키의 위치는 /홈디렉토리/.ssh/authorized_keys 가 될것이다. 그러니까 당연히 id_rsa.pub의 이름을 authorized_keys로 바꾼다음에 /홈디렉토리/.ssh에 파일을 이동시켜야한다. 예를 들어서 서버에 uddum으로 로그인을 한다음에 인증서를 생성했다면 /home/uddum/.ssh에 authorized_keys가 위치해야한다. 클라이언트에서 uddum이라는 아이디를 가지고 접속한다면 서버의 /home/uddum/.ssh에서 공개키를 확인할것이다.

 

그리고 클라이언트에서의 개인키 위치는 각자의 홈디렉토리의 /.ssh/id_rsa(이것은 /etc/ssh/ssh_config에서 설정해줄수 있다)에 있어야한다. uddum이라는 아이디를 가지고있는 클라이언트에서 인증서를 생성한다면 개인키는 /home/uddum/.ssh/에 id_rsa라는 파일명으로 저장되어있어야 한다.

 

인증키생성과 설정이 끝났다.

 

이제 ssh를이용해서 접속하면 문제없이 로그인될것이다.

사용자의 공개키, 비밀키를 생성해주는 프로그램으로 RSA와 DSA 암호화방식을 지원

사용
ssh-keygen [option] value

옵션
-b : 생성할 키의 비트수를 설정
-c : 공개키 및 개인키 파일에 코멘드 설정
-f : 키 파일이름 설정
-t : RSA 나 DSA 의 암호화 방식 설정

 

[출처] ssh-keygen|작성자 uddum0425