메뉴 건너뛰기

조회 수 10780 추천 수 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 해외 IP차단 DDART 2019.06.12 2465
61 터미널에서 backspace 키가 안눌러질때 DDART 2020.07.10 1895
60 저전력 홈서버 구축 DDART 2013.10.17 22978
59 작업순서 DDART 2013.07.08 21164
58 윈도우용 아파치에서 localhost 를 https로 띄우기 file DDART 2023.06.20 818
57 윈도우용 아파치 php 버전 동시에 2개이상 띄우기 DDART 2023.05.26 695
56 윈도우에서 우분투 MariaDB 10.5 로 SSL접속시 SEC_E_ALGORITHM_MISMATCH 오류 DDART 2021.09.14 6207
55 윈도우에서 우분투 22.04 MariaDB 서버 SSL접속시 SEC_E_ALGORITHM_MISMATCH 오류 DDART 2024.01.20 466
54 윈도우에서 우분투 20.04 MariaDB 서버 SSL접속시 SEC_E_ALGORITHM_MISMATCH 오류 DDART 2023.05.06 1142
53 윈도우10 아이콘이 제대로 표시 안될때 DDART 2023.11.08 482
52 윈도우 자동화관련 툴 DDART 2019.06.01 7185
51 윈도우 메일서버구축 DDART 2013.10.17 21532
50 윈도우 10에서 구글 어시스턴트 명령 DDART 2019.09.08 2102
49 윈도우 10 마이크로소프트 계정 PIN 없이 자동로그인 DDART 2020.09.16 1712
48 원격데스크톱 연결후 화면 사라짐현상, 특정 IP만 접속 허용 DDART 2023.05.04 1123
47 원격데스크톱 마이크로소프트 계정 자격증명 실패할때 DDART 2023.04.28 1195
46 우분투 파일시스템 이미지파일 만들기 DDART 2013.07.08 21465
45 우분투 서버 자동업데이트 DDART 2021.07.02 1382
44 우분투 서버 업데이트 후 자동 전원 대기모드 방지 DDART 2021.07.22 1747
43 우분투 22.04 메일서버 설정 DDART 2023.06.13 878
Board Pagination Prev 1 2 3 ... 4 Next
/ 4