메뉴 건너뛰기

조회 수 12401 추천 수 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
번호 제목 글쓴이 날짜 조회 수
44 MariaDB 외부접속시 ssl 사용법, 그리고 ssl 로 replication(동기화) 하기 file DDART 2020.07.12 10956
43 터미널에서 backspace 키가 안눌러질때 DDART 2020.07.11 3620
42 서버사이 동기화하기 - rsync, mariadb replication DDART 2020.07.07 3724
41 msinfo 시스템정보 wmic cmd 명령 DDART 2020.05.17 4389
40 Visual Studio Code 에서 Autohotkey 설정 DDART 2020.01.21 4833
39 우분투 19.04, 19.10, 20.04 으로 업그레이드 하기 DDART 2019.12.22 2630
38 윈도우 10에서 구글 어시스턴트 명령 DDART 2019.09.09 3513
37 해외 IP차단 DDART 2019.06.12 3746
36 Fail2Ban 설정하기 DDART 2019.06.11 317250
35 윈도우 자동화관련 툴 DDART 2019.06.01 8170
34 PHP로 WOL Magic Packet 보내기 DDART 2018.10.31 15242
33 BATCH 문법 DDART 2018.10.16 5131
32 우분투 16.04 에서 18.04 로 업그레이드하기 DDART 2018.10.15 2923
31 Windows 7, 8.1 에서 Windows 10으로 무료업그레이드하기 DDART 2018.10.14 5982
30 vsftpd 설정 DDART 2017.12.12 3183
29 crontab DDART 2017.09.08 9339
28 VBA Project 패스워드 보호 제거하기 3 DDART 2016.09.22 27073
27 우분투 16.04 ownCloud 9.1.0 설치 DDART 2016.08.05 6373
» 우분투 16.04 Subversion - SVN서버, SVN+SSH 클라이언트 DDART 2016.07.31 12401
25 우분투 16.04 FTP, Samba 등 가상디렉토리 추가 DDART 2016.07.31 4408
Board Pagination Prev 1 2 3 ... 4 Next
/ 4