메뉴 건너뛰기

조회 수 10784 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

 

참고자료 : https://help.ubuntu.com/lts/serverguide/subversion.html

 

설치

 

apt install subversion apache2 libapache2-svn

 

 

저장소 만들기

 

mkdir -p /mnt/data1/svn/repos
svnadmin create /mnt/data1/svn/repos/저장소이름

 

소유권 변경

 

chown -R ddart:ddart /mnt/data1/svn/repos

 

저장소 설정

 

vi /mnt/data1/svn/repos/저장소이름/conf/svnserve.conf

 

# anon-access = read
anon-access = none
# password-db = passwd
password-db = passwd

 

vi /mnt/data1/svn/repos/저장소이름/conf/passwd

 

[users]
사용자 = 비밀번호

 

서비스에 등록

 

/etc/init.d/svnserve 새로 만들기 후 아래 내용중

DAEMON_ARGS="-d -r /mnt/data1/svn/repos"  값 자신의 값에 맞게 변경 후 붙여넣기

 

vi /etc/init.d/svnserve

 

#! /bin/sh
### BEGIN INIT INFO
# Provides:          svnserve
# Required-Start:    $local_fs $syslog $remote_fs
# Required-Stop:     $local_fs $syslog $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start svnserve
### END INIT INFO

# Author: Michal Wojciechowski <odyniec@odyniec.net>

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="svnserve"
NAME=svnserve
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-d -r /mnt/data1/svn/repos"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

[ -x "$DAEMON" ] || exit 0

[ -r /etc/default/$NAME ] && . /etc/default/$NAME

. /lib/init/vars.sh

. /lib/lsb/init-functions

do_start()
{
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
                || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
                $DAEMON_ARGS \
                || return 2
}

do_stop()
{
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
        RETVAL="$?"
        [ "$RETVAL" = 2 ] && return 2
        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
        [ "$?" = 2 ] && return 2
        rm -f $PIDFILE
        return "$RETVAL"
}

case "$1" in
  start)
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        do_start
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  stop)
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        do_stop
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  restart|force-reload)
        log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
          0|1)
                do_start
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                esac
                ;;
          *)
                # Failed to stop
                log_end_msg 1
                ;;
        esac
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 3
        ;;
esac

exit 0

 

등록

 

chmod 755 /etc/init.d/svnserve
update-rc.d svnserve defaults

 

 

서비스 재시작

 

service svnserve restart

 

 

 

윈도우용 SVN Client

 

TortoiseSVN 설치

https://tortoisesvn.net/downloads.html

 

사용법

 

탐색기에서 저장소 디렉토리를 새로 만든 후

디렉토리를 오른쪽 클릭-> "SVN Checkout" 에서

저장소 주소를

 

svn://서버주소/저장소이름

 

하고 OK하면

username, password를 물어보는데 서버저장소 conf 디렉토리의 passwd 에서 지정한 사용자, 비번을 지정해준다.

 

 

TortoiseSVN 에서 svn+ssh 설정

 

passwd 파일에 사용자와 비번이 텍스트형태로 다 노출되어 있어 보안상 불안하면 svn+ssh 로 접속하면 해결된다.

위 저장소의 svnserve.conf 에서 passwd 를 주석처리해주고 passwd 를 삭제한다.

 

# anon-access = read
anon-access = none
# password-db = passwd

 

 

TortoiseSVN이 ssh 연결할때 내부 ssh client 기능을 구현하지 않고 특정외부 ssh 프로그램(Putty) 의 세션을 이용해 연결한다.

그러므로 TortoiseSVN으로 svn+ssh 연결하려면 사용자 PC에 Putty가 깔려있어야 하고, Putty에 서버가 ssh세션으로 등록되어 있어야 한다.

 

Putty 다운받기

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

 

putty.exe 와 puttygen.exe 2개를 다운 받는다.

 

 

1. Putty 실행후  Host Name, Port, Connection type(ssh) 지정하고

Saved Sessions 란에 세션이름 입력후 Save해서 새로운 세션을 만들고

이 세션으로 서버연결이 제대로 되는지 확인한다.

 

2. 윈도우 탐색기에서 로컬 저장소디렉토리를 만든후 Checkout 할때,

혹은 이미 Checkout되었다면 저장소오른쪽클릭->TortoiseSVN->Relocate에서

저장소 주소로

 

svn+ssh://사용자계정@Putty에서만든서버세션이름/저장소절대FullPath

 

 

로 연결한다.

 

이제 passwd 노출 없이도 svn 연결이 가능해졌는데 문제는

TortoisePlink가 뭘 할때마다 2번씩(왜 두번씩 물어보는지 모르겠지만) 계정 비밀번호 입력을 팝업창으로 요구한다.

 

TortoisePlink가 계정 비번 안묻게 하는 방법

 

ssh 로그인할때 보안키(public, private key 쌍)를 이용하면 보안키만으로 비번없이 접속할수 있다.

putty 세션에 이 키를 설정해서 로그인때 더이상 비번입력이 필요없게 하면  위 문제를 해결할수 있다.

 

보안키 생성하는 방법은

우분투내의 openssh keygen으로 해도되고 위 putty 사이트에서 받은 puttygen 으로 해도 된다.

 

무엇으로 하든 public키랑 private 키를 생성한후

public key는 서버사용자 홈디렉토리내 .ssh 디렉토리에 authorized_keys 에 추가해 주고

 

/home/사용자/.ssh/authorized_keys

 

private key는 클라이언트 사용자PC에서

putty의  서버세션을 재로드후  connection->ssh->auth 에서 private key의 위치를 지정하고 session을 저장한 후 연결하면 

서버-클라이언트 SSH연결시 비번없이 접속가능하다.

 

주의할점은 key 생성할때 키교환을 위한 비번 passphrase가 지정된걸 쓰면 로그인시 passphrase를 묻게되어

ToroisePlink가 나중에 또 묻게 되므로 passphrase는 key를 교환, 이동시킬때 보안상 적용하고

실제 putty 설정에 사용할때는 puttygen같은 key툴로 passphrase를 없앤 ppk파일을 지정해야한다.

 

 

 

1. 우분투에서 openssh 키젠으로 생성하기

 

 사용자계정홈에서

 

cd ~
ssh-keygen -t rsa

 

~/.ssh/ 에 id_rsa 와 id_rsa.pub 가 새로 생성되는데

id_rsa.pub는 authorized_keys에 추가해주거나 없으면 authorized_keys로 이름을 바꾸고

id_rsa 교환키는 PC로 가져와서 puttygen프로그램으로 import한 후 passphrase를 지우고

'Save private key' 버튼을 눌러 putty키포맷으로 바꿔 ppk확장자로 생성해준 후

이 ppk파일을 putty session 설정에서 지정해준다.

 

2. puttygen으로 생성하기

 

Key->Generate key pair 후 마우스를 움직여주면 생성된다

Key 상단

Public key for pasting into OpenSSH authorized_keys file:

문구 아래 내용을 복사해서

~/.ssh/authorized_keys 에 라인단위로 추가해주고

'Save private key' 버튼으로 ppk파일을 생성후 putty session 설정에 적용해주면 된다.

 

 

 

※ Putty 세션설정에서

Connection -> Data -> Auto-login username에 사용자계정이름을 지정해주면

Putty 자동로그인이 완성된다.

또한

svn+ssh://사용자계정@Putty에서만든서버세션이름/저장소절대FullPath

에서 사용자계정은 빼고

svn+ssh://Putty에서만든서버세션이름/저장소절대FullPath

로 간단히 할수 있다.

 

 

 

commnad line 에서 svn+ssh 설정

 

tortoise 의 command line svn명령어에서 svn+ssh 를 연결할때 SVN_SSH 환경변수에 TortoisePLink.exe 가 설정되어 있어야 한다.

환경변수에 SVN_SSH값으로

C:\\Program Files\\TortoiseSVN\\bin\\TortoisePlink.exe

와 같은 경로를 지정해주는데 이중 '\\' 처럼 \문자를 이스케이프시켜줘야 제대로 동작한다.

 

svn commit -m "메세지" 체크아웃설정된로컬저장소경로(예: C://myrepos)

svn update 로컬저장소경로

 

 

 

 

 

 

 

 


List of Articles
번호 제목 글쓴이 날짜 조회 수
62 MYSQL 덤프파일 입력 DDART 2013.07.08 22666
61 우분투 파일시스템 이미지파일 만들기 DDART 2013.07.08 21465
60 갤럭시U 테그라크커널 DDART 2013.07.08 20788
59 아파치2 rewrite mod enable DDART 2013.07.08 21301
58 Ubuntu 12.04 Desktop 초기 설치 DDART 2013.07.08 22547
57 chrooted ubuntu 초기 설정 DDART 2013.07.08 21297
56 설치된 package 정보보기 DDART 2013.07.08 22180
55 갤럭시U 삭제가능한 기본어플 DDART 2013.07.08 22521
54 작업순서 DDART 2013.07.08 21164
53 메일서버 설정 DDART 2013.07.08 21698
52 KimsQ RB IIS + PM 설치문제 해결 DDART 2013.07.08 22593
51 Ubuntu Mail Server 구축하기 DDART 2013.07.08 22481
50 Javascript reformatter DDART 2013.07.10 22167
49 usb download tool - 32bit 운영체제에서 64bit 운영체제 usb 부팅디스크 만들기 DDART 2013.08.07 25659
48 Windows 8 시작버튼 달기 DDART 2013.10.16 20655
47 윈도우 메일서버구축 DDART 2013.10.17 21532
46 저전력 홈서버 구축 DDART 2013.10.17 22979
45 hMailServer 국가별 접속허용, 차단법 DDART 2013.11.20 21214
44 우분투 16.04 데스크탑 - CLI 모드로 전환 및 부팅하기 관리자 2016.07.20 38634
43 우분투 16.04 서버 세팅 DDART 2016.07.22 7118
Board Pagination Prev 1 2 3 ... 4 Next
/ 4