cygwin을 사용한 svn+ssh 윈도우 서버 설정법

– 서브버전이 지원하는 네트웍으로 저장소에 접근하는 방법


  • svn:// – 속도도 빠르고 설정법도 간편하지만 오가는 내용이 전혀 암호화 되어있지 않다.

  • file://

  • http:// – 아파치 서버를 띄워서 사용할 수 있고 https 프로토콜을 사용하면 ssl 보안이 적용된 것으로 보안성도 갖출 수 있지만 속도가 좀 느리다는 담점이 있다.

  • https://

  • svn+ssh:// – http보다 속도도 빠르면서 강력한 ssh 보안이 적용되었기 때문에 외부에서 저장소로 접근하기 가장 좋은 프로토콜이다.


SSH(secure shell)

SSH는 원격 컴퓨터에 안전하게 액세스하기 위한 유닉스 기반의 명령 인터페이스 및 프로토콜로서, 때로 Secure Socket Shell이라고 불리기도 한다. SSH는 네트웍 관리자들이 웹서버를 포함한 여러 종류의 서버들을 원격지에서 제어하기 위해 널리 사용된다. SSH는 실제로 초창기 유닉스 유틸리티인 rlogin, rsh, rcp에 보안 기능이 추가된 버전, slogin, ssh, 그리고 scp 등, 세 가지 유틸리티들의 모음이다. SSH 명령은 몇 가지 방식으로 암호화가 보장된다. 클라이언트/서버 연결의 양단은 전자 서명을 사용하여 인증되며, 패스워드는 암호화됨으로써 보호된다.


SSH는 쌍방의 접속과 인증을 위해 RSA 공개 키 암호화 기법을 사용한다. 암호화 알고리즘에는 Blowfish, DES, 및 IDEA 등이 포함되며, 기본 알고리즘은 IDEA이다.


SSH2는 SSH의 최신버전으로서 새로운 표준으로서 현재 IETF에 제안되어 있다.


– cygwin 설치
윈도우 환경에서 유닉스/리눅스 환경을 에뮬레이션 해주는 프로그램..




  1. c:\cygwin 폴더를 생성한다.

  2. cygwin setup.exe 파일을 http://www.cygwin.com/에서 다운로드 받아 c:\cygwin 폴더에 저장한다.

  3. setup.exe를 실행하여 설치를 시작한다.
    Select Root Install Directory 대화상자에서 Install For 에 All Users를 선택한다.
    Root Directory로는 위에서 생성한 c:\cygwin이 선택되도록 한다.

  4. 다음을 누르면 나오는 Select Local Package Directory를 c:\cygwin으로 선택한다.

  5. 다음을 눌러 다운로드 서버를 선택한 후에 Select Packages 대화상자가 나오면 아래의 패키지를 설치하도록 한다. 대화상자에서 View 버튼을 클릭하여 Full로 나오도록 한다.
    – openssh
    – tcp_wrappers
    – zlib
    – vi

  6. 다음 버튼을 눌러 설치를 시작한다.

  7. 설치가 완료되면 시스템 환경 변수를 추가하고, c:\cygwin\bin 폴더를 Path 환경변수에 추가해주도록 한다.
    추가할 시스템 환경 변수 : CYGWIN = ntsec tty

  8. 설치된 cygwin 아이콘을 더블클릭하여 쉘을 열도록 한다.

  9. 쉘에서 아래의 명령을 수행한다.

    ssh-host-config -y

    수행중에 아래와 같은 사항을 물어보게 되면 모두 yes로 한다.
    If the script asks you about “privilege separation“, answer yes
    If the script asks about “create a local user sshd on this machine“, answer yes
    If the script asks you about “install sshd as a service“, answer yes


  10. 다음으로 sshd 데몬을 실행한다.
    start the sshd service

  11. 다음으로 윈도우 패스워드와 그룹을 가져와서 생성하도록 아래의 명령을 실행한다.

    mkpasswd   -cl   >   /etc/passwd
    mkgroup   –local    >   /etc/group


– 설치 후 테스트
설치를 하고 난 후 cygwin 콘솔창에서
ssh username@ip_address
을 입력하여 제대로 로그인이 되는지 확인한다. 이 명령을 수행하면 /home/ 경로 밑에 해당 이용자의 폴더가 생성되는것을 확인할 수 있다.

– ssh 설정
cygwin을 설치한 다음엔 Putty라는 윈도우용 ssh 클라이언트를 받아서 시험삼아 로그인을 해보도록 한다. 위의 설정법대로 했다면 윈도우 계정의 아이디와 패스워드를 입력하면 제대로 로그인이 될 것이다.

그 다음은 저장소에 액세스할 때마다 매번 아이디와 비밀번호를 입력할 수 없는 노릇이므로 터널링이 필요한데, ssh 보안 기능을 이용해 공개키아 개인키를 생성해서 공개키는 서버에 두고 개인키를 사용해서 자동으로 로그인 하는 방법을 사용한다.

그러기 위해서는 RSA 공개키 및 개인키를 생성해야 한다. 아래와 같은 순서로 생성하도록 한다.

직접 서버에서 cygwin을 실행시키고,

ssh-keygen -t rsa

를 콘솔에 입력하고 계속 엔터를 치면 cygwin을 설치한 폴더의 /home/userid/.ssh/ 폴더에 id_rsa(개인키)와 id_rsa.pub(공개키)가 생성되어 있는 것을 볼 수 있다.

그 다음에 공개키 파일의 이름을 authorized_keys로 바꾼다.

그리고 개인키는 클라이언트 컴퓨터로 가지고 와서 putty를 설치할 때 같이 설치 된 puttygen을 실행시킨다. 그리고 나서 메뉴의 Conversions에서 ImportKey를 선택하여 아까 서버로부터 복사해둔 개인키 파일을 임포트하여 다시 파일에서 Save Private Key로 저장해둔다. PuTTY가 인식할 수 있는 개인키 포맷으로 바꾸는 작업이다.

그리고 나서 subversion / TortoiseSVN SSH HowTo에 나와있는 설명대로 PuTTY ssh 클라이언트를 실행시켜서 다음과 같이 설정을 한다.

Session->HostName: Hostname or IP Adress of your server
Session->Protocol: SSH
Session->Saved Sessions: MyConnection
SSH->Prefered SSH Protocol version: 2
SSH->Auth->Private Key file for auth: $PATH$\mykey.PKK (replace $PATH$ with real path to the mykey.PKK file)

추가적으로, Connection->Auto-login username: 계정 아이디도 반드시 설정해 주어야 한다.
그리고 반드시 Session 에서 이름을 하나 정해서 저장을 해두도록 한다.

그 다음 접속해보면 아까와는 다르게 아이디와 비번을 입력하지 않아도 개인키가 자동으로 입력되어서 자동으로 로그인 되는 것을 확인 할 수 있다. 그렇게 되어야 한다.

그 다음으로는, Cygwin을 사용한 윈도우 서버 설정법에 마지막에서 두 번째로 나와있는 항목인 서버의 authorized_keys 를 메모장으로 열어서 설명한 대로 키 정보 앞부분에 넣도록 한다.
그리고 여기서 절대 엔터 쳐서 개행문자를 삽입하지 말것.

command=”svnserve -t -r c:/mySVNroot/ –tunnel-user=<SVNuser>”,no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty
 
이 구문은 모두 붙어있는 구문이니 ssh-rsa 앞에서 엔터를 치지 말고 공백만 삽입해야 한다.

이렇게 하는 이유는 서비스로 돌아가고 있는 Cygwin ssh 데몬으로 로그인을 하는 과정에서 서브버전 서버를 실행시키기 위해서이다. 기본 루트 서브버전 저장소의 패스를 넣어두고 내 계정 아이디를 넣어주어 터널링을 시키기 위한 목적이다.

이 부분에서 또 한가지 걸리는 것이 있다. 바로 Cygwin 환경에서는 svnserve 프로그램을 실행시킬 수가 없다. Cygwin 에서 svnserve 프로그램을 인식시키기 위해서는 가장 간단한 방법으로 Cygwin 루트 패스의 bin 폴더에 서브버전 프로그램들과 dll 을 복사시켜 두는 것이다. 그러면 문제없이 돌아간다.

svnserve 는 서브버전의 윈도우용 배포판 바이너리에 포함되어있는 서버 프로그램이다.

이렇게 해놓으면 셋팅이 끝난다. 외부 클라이언트에서 접속을 해보자. PuTTY 클라이언트를 실행시키고 아까 저장한 세션대로 접속을 해보자, 그럼 다음과 같이 떠야 정상이다.

이제 Tortoise Subversion 으로 저장소에 접근을 해보자.

svn+ssh://PuTTY에서 저장한 Session 이름

으로 접속하면 접속에 성공한다.

이렇게 접속하면 아까 Authorized_keys 파일을 수정할 떄 넣어놓은 루트 저장소가 열리게 된다. 굳이 저장소가 아니어도 임의의 폴더로 정해놓으면 그 폴더가 루트가 된다.

출처 : http://blog.naver.com/unijune?Redirect=Log&logNo=40042887344

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다