서브버전(svn)을 이용할 때 접속 프로토콜을 svn+ssh를 이용하여 접속을 하면 커밋을 할 때 마다 암호를 물어보게 된다. 그것도 한번도 아니고 여러번을 물어보게 된다-_-);

cvs를 쓸 땐 암호가 저장이 되어 한번 입력하면 더이상 물어보지 않아서 편했는데 svn+ssh를 이용한 인증의 경우에는 한번도 아니고(사실 한번 물어봐도 짜증인데) 여러번 물어보니 여간 불편한게 아닐 수 없다.

이는 svn클라이언트가 tunneling을 하여 서버에 접속 후 작동을 할 때 한번 접속 후 svnserve를 실행하는게 아니라 여러번 접속을 했다가 끊었다가 하면서 작동을 하기 때문이다.

그럼 이 암호를 매번 물어보는 것을 생략하는 방법을 알아보자.
기본 개념은 rsa 인증키를 만들어 ssh에 세팅 후 이를 이용하여 접속을 하는 것이다..


그러기 위해서는 우선 rsa인증키를 만들어야한다. 그러기 위해서는 svn저장소가 있는 서버에 접속하여 아래와 같은 과정을 거쳐서 rsa키를 생성하여야 한다.

[chadr@dev ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/daldev/chadr/.ssh/id_rsa):
Created directory '/home/daldev/chadr/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/daldev/chadr/.ssh/id_rsa.
Your public key has been saved in /home/daldev/chadr/.ssh/id_rsa.pub.
The key fingerprint is:
00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 chadr@dev.dalmuri.net
[chadr@dev ~]$


: 생성된 rsa 키의 저장 위치와 이름을 입력하는 곳이다. 그냥 디폴트를 사용하고 싶으면 엔터를 입력하면 된다.
: 생성된 rsa 개인키의 암호를 입력하는 곳이다. 암호를 입력하고 싶지 않다면 그냥 엔터를 치면 된다. 어차피 추후에 생성된 개인키를 이용하여 OpenSSH 개인키를 생성하는 과정에서 다시 암호를 입력하게 되므로 반드시 암호를 입력 할 필요는 없다. 하지만 암호를 입력했을 때에는 OpenSSH 개인키를 생성하는 과정에서 암호를 물어보기 때문에 기억을 하고 있어야 한다.
: 생성된 키의 fingerprint값이다. 키를 생성할 때 마다 다르게 생성된다.


rsa 키를 무사히 생성했다면 공개키의 이름을 바꿔주어야 한다. 아래가 그 과정이다.

[chadr@dev ~]$ cd .ssh
[chadr@dev .ssh]$ ls
id_rsa id_rsa.pub
[chadr@dev .ssh]$ cp id_rsa.pub authorized_keys
[chadr@dev .ssh]$ ls
authorized_keys id_rsa id_rsa.pub
[chadr@dev .ssh]$

: rsa키를 생성했던 디렉토리이다.
: 생성된 rsa키들이다.. id_rsa가 개인키이고 id_rsa.pub가 공개키이다.
: 공개키 이름을 바꿔줘야 한다. 기본적으로 ssh가 공개/개인키를 이용하여 인증을 시도할 때 "authorized_keys"라는 공개키를 찾기 때문이다.(반드시 authorized_keys이어야 한다!!)


여기까지 무사히 마쳤다면 생성된 개인키를 이용하여 OpenSSH 개인키를 생성해야 한다. svn+ssh는 plink를 이용하여 ssh인증을 거치기 때문에 putty 세션과 호환이 된다. 따라서 세션은 putty를 이용하여 생성하여야 하므로 개인키를 이용하여 OpenSSH 개인키를 생성해야한다. 아래의 url에서 putty key genarator를 다운로드 하자.
http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe


그 전에 한가지 해야 할 일은 서버에 저장된 개인키를 자신의 컴퓨터에 저장해야 한다. 직접 ftp를 이용하여 다운로드 해도 되고 개인를 cat으로 열고 나서 그걸 직접 텍스트 파일로 저장해도 된다. 뭐 무슨 방법을 쓰든간에 자신의 컴퓨터에 개인키를 저장해 놓도록 하자.

그리고나서 puttygen를 실행하고 메뉴에서 Conversions->Import key를 눌러 위에서 저장한 개인키의 위치를 지정하도록 한다. 만약에 rsa키를 생성 할 때 암호를 입력했었다면 암호를 입력하라고 나올 것이다. 무사히 개인키가 Import되었다면 아래와 같은 화면이 나올 것이다.



: 생성된 OpenSSH 공개키이다.
: 개인키의 암호를 입력하는 곳이다. 이곳에 암호를 입력하고 svn+ssh를 이용하여 인증을 하면 매번 개인키 암호를 물어보게 된다. 만약에 매번 암호를 물어보는것이 귀찮다면 암호를 입력하지 않으면 된다. 하지만 만약에 이 개인키가 외부에 유출이 되었을 경우에 어떤 컴퓨터에서든 암호 없이 저장소에 쓰기 접근이 가능하므로 유의 해야한다.


위의 화면에서 Save private key를 눌러 공개키를 저장하자. 만약에 암호를 입력하지 않았다면 경고메시지가 나오나 그냥 ok를 누르면 개인키가 저장된다.

여기까지 마쳤다면 이제 putty 세션을 설정할 차례이다. putty를 실행해보자. 혹시 putty가 없다면 아래의 url에서 다운로드를 하면 된다.

http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe


putty를 실행하면 아래와 같은 화면이 나온다.



: 접속할 서버 주소이다. 이곳에 접속할 서버 주소와 포트번호를 입력한다.
: 저장할 세션 이름이다. 적당한 이름을 입력하면 된다. 이름을 입력 후 아래의 개인키 세팅 까지 마쳤다면 반드시 Save를 이용하여 저장을 해야 한다.
: 앞에서 저장한 개인키를 세팅하는 곳이다. 이곳을 클릭하고 개인키를 입력하는 곳에 앞에서 저장한 개인키의 경로를 지정해 주면 된다.


위의 화면에서 ①,②를 입력 후 ③을 클릭하면 아래와 같은 화면이 나온다.


: 이곳에 저장한 개인키의 경로를 지정해 준다. 경로 지정을 마쳤다며 세션을 저장하면 된다.


개인키 세팅을 마치고 세션을 저장했다면 저장한 세션을 이용하여 ssh를 접속해보자. 아래와 같은 메시지가 나온다면 세팅이 완료 된 것이다.

login as: chadr
Authenticating with public key "imported-openssh-key"
Passphrase for key "imported-openssh-key":
Last login: Sun Apr 9 10:57:05 2006 from 210.111.8.10
[chadr@dev ~]$


만약에 개인키에 암호를 지정 하지 않았다면 "Passphrase for key "imported-openssh-key":" 라는 문구가 나타나지 않고 바로 로그인이 완료 된다.


여기까지 모두 무사히 마쳤다면 svn+ssh를 이용하여 저장소에 접근을 해보자. 만약에 개인키에 암호를 지정했다면 암호를 한번은 물어보게 될것이다. 하지만 개인키에 암호를 지정하지 않았다면 암호를 물어보지 않고 바로 접근이 가능 할 것이다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2006/04/09 09:27 2006/04/09 09:27

트랙백 주소 :: http://dcple.com/blog/trackback/64

댓글을 달아 주세요

  1. ssh 터널링 관련 포스트를 작성하여(트랙백 남깁니다) 관련글을 검색하다 찾아 들어와 봤습니다.

    putty사용법을 -이미 예전에- 깔끔하게 잘 정리 해 두셨네요. 제가 ssh를 배울때 이 포스트를 알았다면 좀 더 쉽게 배울 수 있었을 것 같습니다.

    다만, 위의 내용중 서버에서 개인키를 생성하여 -네트워크를 통해- PC로 복사하셨는데 이 과정에서 키 유출이 발생할 여지가 있으므로, Putty에서 키쌍을 생성하여 -유출되도 문제없는- 공개키를 서버에 복사하시는게 좋은 방법이라고 생각됩니다.

    이미 아시는 내용이시겠지만, 제가 ssh키를 처음 접할때 공개키/개인키의 의미에 대해 헷갈리던 부분이라 덧붙여 봤습니다.

    좋은 포스트 감사드리고, 행복한 하루 되세요 :)

[로그인][오픈아이디란?]