강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

ssh-keygen을 이용한 key 설정

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.giftitle02.gif


이 문서를 다른 웹이나 출판물에 게시할 때는 반드시 출처를 밝혀 주시기 바랍니다.

최종 수정일 : 2001년 8월 24일
글쓴이 : 윤 일 (admin@rootman.co.kr)

HOW-TO Using ssh-keygen

[client에서의 설정]
ssh-keygen명령을 이용해서 암호키(public_key)와 암호키(private_kdy)를 생성해서 ssh2 서버로 접속을 하는 방법을 설명합니다. SSH2 서버에 공개키 설정이 되어 있지 않으면 텔넷 패스워드로도 접속을 할수 있습니다.

텔넷 패스워드를 그대로 사용해도 로그인 할 수 있는데 왜 ssh-keygen으로 공개키와 암호키를 생성해서 사용할까?
ssh2를 텔넷 패스워드를 사용해서 접속 해도 접속한 후에는 모든 서버와의 통신은 암호화 된다. 하지만 만약 자신이 ssh2에 접속하는 것(접속한 후가 아니라 접속할려고 패스를 넣는 과정까지)을 누군가가 스니핑하고 있다고 생각해 보자. (텔넷 암호를 이용해서 로그인 한다고 가정)
그럼 그 나쁜넘(스니핑을 하고 있는 넘)은 ssh2로 접속하는 id와 password를 힘 하나 들이지 않고 알 수 있을 것이다. 또 나쁜넘은 자신이 알아낸 id와 password로 서버에 접속해서 계정 사용자 행세를 할 것이다.
바로 이러한 문제 때문에 ssh-keygen을 이용해 password를 생성하고 그 password를 이용해서 ssh2로 접속하는 것이다.
ssh-keygen으로 생성한 password는 다른 사람에게 완전히 노출된다고 해도 접속하는 사람이 암호키 파일을 가지고 있지 않다면 절대 접속할 수 없다. 즉, 스니퍼가 알아낸 ssh2 password는 암호키 파일을 가지고 있지 않은 사람한테는 무용지물인 것이다. 그럼 본격적으로 ssh-keygen을 사용하여 key를 생성하는 방법에 대해 설명하겠다.

다음은 ssh-keygen을 실행해서 설정하는 화면입니다.

keygen.png

key 생성을 위해서는 ssh-keygen 명령을 이용하면 된다.
[root@yunil /root]# ssh-keygen

그럼 위와 같이 뭔가 한참 진행 되다가 "Passphrase :"라는 것이 나타날 것이다. 여기에 사용할 패스워드를 적고 엔터를 치면 입력한 패스워드에 대해서 한번 더 확인 하는 절차를 가진다. 다시 한번 더 똑같이 입력하고 엔터를 치면 Private Key와 Public Key 파일이 저장되어진 장소를 출력해 준다. 기본적으로 사용자 홈디렉토리의 .ssh2 디렉토리에 저장된다.
생성된 Public Key는 모든 사용자들이 읽을 수 있게 퍼미션이 설정 되어 있지만 Private Key는 사용자만 읽을 수 있도록 설정되어 있다.

Key 파일이 잘 생성되었다면 간단한 설정을 위해 Key 파일이 저장된 .ssh2 디렉토리로 이동한다.
[root@yunil /root]# cd .ssh2

identification이라는 파일을 만들어야 된다. 이 파일은 Private Key 파일의 정보를 가지고 있는 파일이다.
다음과 같이 "Idkey id_dsa_1024_a"라는 내용을 가진 identification파일을 만들어 준다.
Idkey는 Private Key를 지정하는 키워드 이고 id_dsa_1024_a는 Private Key 파일 이름이다.
주의 : Idkey  의 첫번째 문자 I는 대문자 i 이다.
[root@yunil ssh2]# echo "Idkey id_dsa_1024_a" > identification

이제 id_dsa_1024_a.pub파일을 접속하고자 하는 SSH2서버의 자신의 홈디렉토리로 전송해야 된다.  
아래의 경우는 linux.rootman.co.kr의 rootman계정의 홈디렉토리로 scp명려을 이용해 파일을 전송하는 겁니다.
[root@yunil ssh2]# scp id_dsa_1024_a.pub rootman@linux.rootman.co.kr:.

위와 같이 적고 엔터를 치면 비밀번호를 물어옵니다. 아직 SSH2의 키를 설정하지 않았기 때문에 그냥 telnet 비밀번호를 적고 엔터를 치면 파일이 전송된다. 여기 까지 클라이언트에서의 준비는 끝났네요.

[Server에서의 설정]
ssh-keygen으로 생성된 패스를 사용하기 위한 마지막 설정은 접속하고자 하는 ssh2 서버의 홈디렉토리에 설정해야 된다. 즉 Private Key는 사용자가 가지고 있고 Public_Key는 접속하고자 하는 ssh2 서버의 계정 홈디렉토리에 존재해야 된다.
접속하고자 하는 ssh2 서버에 접속하자. 접속 방법은 telnet을 이용해도 되고 ssh2 클라이언트를 이용해도 된다. 여기서는 ssh2 클라이언트를 이용하겠다.

다음과 linux.rootman.co.kr에 rootman의 계정으로 접속을 하기 위한 명령이다. '-l' 뒤에 계정 ID를 적고 그 뒤에는 접속하고자 하는 서버의 도메인이다.
[root@yunil root]# ssh -l rootman linux.rootman.co.kr

위와 같이 적고 엔터를 치면 뭐시기 거시기.. 많은 글자들이 나타나고 끝에 [yes / no]라고 나타날 것이다.
"yes"라고 적고 엔터를 치면 password를 물어 오는데 텔넷 패스워드를 넣고 엔터를 치면 접속된다. 접속된 화면은 텔넷과 똑 같을 것이다. ssh2에 대한 엉뚱한 상상을 하고 계셨던 분들은 실망할 수도 있다.

auth.png

서버에 잘 접속 되었다면 .ssh2 디렉토리를 만들어 주자. (디렉토리 명이 점( . )으로 시작한다는 것을 명심)
[root@yunil ssh2]# mkdir .ssh2

디렉토리가 생성된 다음에는 "ls -al" 명령을 해 보면 조금 전에 사용자 컴퓨터에서 전송한 id_dsa_1024_a.pub라는 파일과 방금 생성한 .ssh2 디렉토리가 있을 것이다.

이번에는 id_dsa_1024_a.pub 파일을 client_host.pub라는 이름으로 바꾸어서 .ssh2 디렉토리로 이동시켜야 된다. client_host.pub는 사용자가 원하는 이름으로 변경해도 되고 변경하지 않고 그대로 사용해도 되는데 이름을 변경할 때는 꼭 확장자를 .pub로 해야된다.
[rootman@linux rootman]# mv id_dsa_1024_a.pub  .ssh2/client_host.pub

이제 authorization 파일을 생성하기 위해 .ssh2 디렉토리로 이동하자.
[rootman@linux rootman]# cd .ssh2

다음과 같이 authorization 파일을 만들어 주자 authorization 파일은 Public Key 파일 정보를 가지고 있는 파일이다. Key는 Public Key를 지정하는 키워드 이고 clinet_host.pub는 Public Key 파일 이름이다.

vi 편집기를 이용해서 작성할 것이다. 위의 캡처한 화면처럼 cat을 이용해도 된다.
[root@yunil ssh2]# vi  authorization
Key           client_host.pub

위와 같이 한줄 작성하고 저장하면 끝이다.  Key 와 clinet_host.pub 사이는 [Tab] 키를 이용해 공간을 띄워주자.
이제 ssh-keygen을 이용해서 설정한 패스워드를 사용하기 위한 설정이 끝났다.
제대로 잘 작동이 되는지 테스트를 위해 현재 ssh2서버에서 로그아웃 하고 다시 ssh2 접속을 해보자.

login.png

아래 명령은 사용자의 컴퓨터에서 해야 된다.
[root@yunil ssh2]# ssh -l  [계정아이디]  [접속주소]

위와 같이 명령하면 조금전과는 다른 로그인 화면이 나타난다.
password를 물어 오면 ssh-keygen으로 설정했던 패스워드를 넣고 엔터를 치면 접속 될 것이다.

강좌 끝.. !!!   

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  76 명