SVN+SSH的部署方式,主要是使用serve的隧道方式來登陸SVN。
步驟如下
1 添加一個Linux系統用戶。並生產密鑰,生存authorized_keys文件,並指定command為svnserve的隧道,帶上svn用戶名。
2 修改svn的config,使用authz,並添加linux用戶。
使用中有幾點要注意:
1. svn+ssh,需要添加一個linux系統用戶,能登錄系統的。
2. 用ssh-keygen生成密鑰后,需要改為authorized_keys,並且指定command為svnserve的隧道。
3.在checkout時和svn方式不一樣,“svn co svn://192.168.11.6/repos”,而后者是“svn co svn+ssh://linuxuser@192.168.11.6/svnroot/repos”,一定要加上路徑,否則會說找不到這個repository.
4.新建一個svn用戶,在auth里指定權限,在passwd里指定密碼,用svn方式就可以訪問;同時它可以作為ssh方式的隧道。
5. 新建一個系統用戶,在.ssh/authorized_keys指定隧道。
6.需要將svn用戶和系統用戶都添加到auth里面,否則會說Authorized failed。
具體操作步驟如下:
1 創建linux用戶,並指定隧道
#useradd linuxuser #printf "123456\n123456" | sudo passwd linuxuser #su - aaron #mkdir -p .ssh && cd .ssh #ssh-keygen -t rsa -b 1024 #echo -n 'command="/usr/bin/svnserve -t -r /localdisk/svndata --tunnel-user=svnuser"' >> authorized_keys #echo -n ',no-port-forwarding,no-pty,no-agent-forwarding,no-X11-forwarding' >> authorized_keys #echo -n ' ' >> authorized_keys #cat id_rsa.pub >> authorized_keys
2 配置svn repos
# cat svnserve.conf anon-access =none auth-access = write password-db = passwd authz-db = authz #cat authz [/] svnuser = rw linuxuser = rw #cat passwd [users] svnuser=123456
3 訪問svn庫
svn co svn+ssh://linuxuser@192.168.11.6/svnroot/repos //全路徑