1. Intro ¶
CVS의 대용으로 개발되기 시작하여, 최근 fsfs의 지원 이후로 CVS를 대체해 나가는 추세이다. 많은 opensource 기반 프로젝트들이 SVN으로 옮겨갈 준비들을 하고 있다. 최신버전인 1.2버전부터는 bdb가 기본이었던 것이 fsfs가 기본 타입으로 설정되었다.
What's New in Subversion 1.2
- Optional locking ("reserved checkouts")
- Full WebDAV autoversioning
- FSFS repository back end is now the default
- Faster access to old revisions
- Many improved APIs
2. Detail ¶
- 기본적인 이용법은 거의 cvs와 동일하다. 심지어는 콘솔의 명령어도 거의 동일하다고 생각된다. 하물며 Tortoise같은 프로그램인데 오죽하랴. 다른 것은 저장소를 표기하는 방법이 다르다.
- 공용 저장소 (svn group에 속한 사용자들이 공동으롯 사용하는 공간)
~cpp svn+ssh://ID@zeropage.org/home/SVN/project
http://zeropage.org/svn/project 프로젝트 진행 Repository ~cpp svn+ssh://ID@zeropage.org/home/SVN/study
http://zeropage.org/svn/study 스터디 진행 Repository
SubVersion의 저장소는
의 형태로 이루어진다. 그외의 모든 것은 CVS와 동일하다.~cpp protocol-name://id@hostname/remote_repository_absolute_dir
ViewCVS : 웹인터페이스로의 체크아웃이 가능하다.
3. Account? ¶
제로페이지의 사용자 계정이 있다면 누구나 사용이 가능하다. 대신에 로컬에는 ssh의 클라이언트(커맨드 기반)가 필요하다. (그렇지만 그룹설정이 필요하기 때문에 관리자에게 그룹으로 설정해달라고 해야합니다. 그룹이용자가 아닌 경우에는 저장소를 읽을 수는 있지만 쓰기는 하지못한다.)
svnserver을 이용하면 사용이 간편하고 서버를 관리하기도 편하지만, 아직 SubVersion이 계정 파일로 encrypt 된 것을 지원하지 않기 때문에 패스워드 노출의 소지가 상당히 높아서 이용하지 않았다. 차후 subversion 이 이 사항을 지원하면 추가하는 것이 좋을 듯 함.
subversion 은 http 로의 접근도 제공한다. 대신에 기본제공 프로토콜보다는 속도가 느린 단점이 있다. http 의 접근은 현재 익명계정에 대해서는 checkout, read 만 사용이 가능하며 checkin 계정을 받기 위해서는 관리자에게 다음의 정보를 메일로 보내주면 추가하는 것이 가능하다.
svnserver을 이용하면 사용이 간편하고 서버를 관리하기도 편하지만, 아직 SubVersion이 계정 파일로 encrypt 된 것을 지원하지 않기 때문에 패스워드 노출의 소지가 상당히 높아서 이용하지 않았다. 차후 subversion 이 이 사항을 지원하면 추가하는 것이 좋을 듯 함.
subversion 은 http 로의 접근도 제공한다. 대신에 기본제공 프로토콜보다는 속도가 느린 단점이 있다. http 의 접근은 현재 익명계정에 대해서는 checkout, read 만 사용이 가능하며 checkin 계정을 받기 위해서는 관리자에게 다음의 정보를 메일로 보내주면 추가하는 것이 가능하다.
- 저장소의 개인권한을 만들려고 하다보니 웹에서의 체크아웃은 공용 저장소인 project, study 에 국한합니다. 개인별 저장소는 오로지 ssh 에 의한 접근만을 허용합니다.
~cpp 리눅스 계정의 시스템에서 다음의 명령어를 통해서 출력되는 문장을 복사해서 관리자에게 보내주면 된다. sapius@zeropage:/home/SVN$ htpasswd -n sapius New password: Re-type new password: sapius:i2BKwIhXaPCbc // 이런 문장이다. Crypt 알고리즘으로 암호화된 문장이다.
4. SSH Login Tip ¶
- SSH를 통해서 접근을 하는 경우 상당히 잦은 패스워드 입력 창을 보게됩니다. 이를 해결하기 위해서 몇가지 방법이 존재하는데.. (터널링 프로토콜로 SSH를 이용하기 때문에 어찌하였던 SSH 프로그램을 등록해야함.)
간단하지만 보안에서 취약한 방법
- SSH프로그램의 옵션으로 패스워드를 주는 방법
~cpp explorer환경하에서 마우스 오른쪽 버튼을 클릭 "TortoiseSVN"->"Settings" Network"탭에서 "SSH"설정을 다음과 같이 변경 D:Program FilesTortoiseSVNbinTortoisePlink.exe" -l 계정 -pw 암호
상기의 방법의 경우에는 암호가 그대로 저장되기 때문에 본인의 컴퓨터가 아닌 상황에서는 피하는 것이 좋습니다.
하지만 이런 방법을 통하지 않으면 SVN은 단위 작업을 할때마다 패스워드를 뭍기 때문에 가능하면 비슷한 방법이라도 쓰는 것이 좋다.
약간 복잡하지만 보안이 확실한 두번째 방법
- rsa key pair 를 만들어서 키를 등록하는 방법
~cpp 1. puttygen, Pageant 를 받는다. http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html puttygen: rsa, dsa 공개키/비밀키 쌍 생성 프로그램 pageant: 키관리 프로그램 Linux 계정이 있다면 ssh-keygen 을 이용해서 생성시키는 방법도 존재한다. 이 방법이 훨씬더 빠르게 생성된다. 2. puttygen 을 실행. generate를 눌러서 키를 우선 만든다. 3. key comment 를 알아보기 쉽게 변경한다. 단순히 키의 주석을 다는 것이므로 아무걸로 해도 무관하다. keyphrase 는 주의해서 만들어야한다. 이는 private-key에 암호를 부여하는 기능으로 키파일이 악의적 사용자에게 복사되었을 때 어느정도의 안전성을 보장한다. 만약 설정하지 않으면 파일만 있다면 기타의 확인절차없이 바로 사용이 시스템에 접속하게 된다. 보면 양날의 검이라는 생각이 -_-;; 4. Save Public Key 를 눌러서 키를 저장한다. 상단에 Public key for pasting into OpenSSH authorized_keys file 란에 있는 내용을 복사해서 ~/.ssh/authorized_keys 에 붙여넣는다. (내용을 전체를 복사해야 된다. 그렇지 않으면 인증이 안된다. 전체는 한줄로 이루어진다) 만약 키가 다수개가 존재한다면 바로 다음줄에 붙여넣으면 된다. 만약 파일이 없다면 동일한 파일이름을 만들면된다. root@zeropage:~/.ssh# ls authorized_keys known_hosts root@zeropage:~/.ssh# vi authorized_keys 5. Save Private Key 룰 눌러서 키를 저장한다. 6. pageant 를 실행하여서 프라이빗 키를 등록한다. 최초 키 등록시의 암호만 입력하면 시스템에 접속하기 위해서 따로 암호를 칠 필요가 없다. 물론 키파일은 rsa로 암호화된 상태이기 때문에 사용자가 내 암호를 역으로 알아낼 수도 없다. 단지 키를 분실하고, 그 키의 암호를 해킹당한다면 수가 없다. 푸티의 에이전트로 TortoisePlink.exe 가 접속이 되는 이유는 TortoisePlink.exe가 푸티의 소스를 가져온 것이기 때문에 pageant와 호환이 되는 것이다. 푸티 비호환 프로그램에서는 그 프로그램에 맞는 키 에이전트를 설치하면 된다.
어쨋듯 상기의 방법은 단순히 SVN뿐만아니라 SSH를 사용하는 모든 서버, 클라이언트에게 해당하는
접속 방법이다.
만들어진 개인키를 USB나 메일 계정에 넣어두고 필요할때마다 받아서 사용하면 거의 문제가 없다.
(물론 소홀히 다루면 엄청난 재앙이... 편한 만큼 지켜야할 것도 많겠지...^^)
만약 상기의 방법으로 했는데 접속이 안된다면 서버 관리자에게 /etc/ssh/sshd_config (데비안 기준)를
확인해서
~cpp RSAAuthentication yes
~cpp PubkeyAuthentication yes
~cpp AuthorizedKeysFile %h/.ssh/authorized_keys
옵션이 ssh 데몬에 활성화된 상태인지를 확인하면 된다.
5. Thread ¶
- 윈도우에서는 TortoiseSVN 을 이용해서 기존의 CVS와 거의 동일한 방식으로 사용하는 것이 가능하다.
- CVS를 이용하던 사람은 바로 이용이 가능할 정도로 기존의 CVS와 명령어의 구성체계가 유사하다.
- 자신이 만든 소스를 CVS에 저장하여서 보관하면서 후에 포트폴리오로 만들어 보는 것도 좋을 것임.
원한다면 개인용 저장소를 만들어주는 것도 가능함.
- 영창쓰 감사..~ 시간나면 ViewCVS 랑 연동도. (근데, 사람들 CVS 들은 쓰고 있던가.? http://zeropage.org/cvs 참고) --1002
ZeroPageServer SubVersion