SVN+SSH 服務器創建及客戶端配置.(ubuntu 12.04)
2014-09-05 14:06
267 查看
先说怎么安装吧,然后再说这种服务器的安全性.约定,以下所有命令如果提示无权限请在最前面添加 sudo空格
1.安装必要的一些软件.
2.创建代码库.
//创建两个用户 svnuser1,svnuser2
//创建用户组. svnuser
//将svnuser1 svnuser2 加入 用户组svnuser
通过以上的操作,名为project1的代码仓就已经创建好了
3.加入代码到代码仓.有很多方法.下面只讲在服务器上面添加的一种简单方法.
这里假设你的代码放在 /project1 目录下面
$svn import -m "一些注释信息" /project1 file:///svnres/project1
这里完成了添加代码进代码仓.
这里还有一点要注意的就是用户权限.
我们需要的是 svnuser 组的用户都可以读写代码仓.
所以还需要做一件事 .
4.下面导出密钥KEY给客户端使用.
切换到svnuser1 和svnuser2用户.
分别执行 ssh-keygen -t rsa -b 1024 -f svnuser.key
这过程可以输入密码也可以不输入密码 .
执行后会产生两个文件
svnuser.key.pub svnuser.key
其中文件 svnuser.key是给终端使用的.
执行以下命令
这里需要注意文件名必须为 authorized_keys
想办法把 svnuser.key文件复制到终端系统.
=======================================================
下面介绍客户端的使用 .
由于我只在windows下面使用 vs2008,所以就不介绍别的工具具体使用 .
vs2008要加入svn支持的话,需要下载此三个软件.
AnkhSvn putty.zip(包含 putty.exe PAGEANT.exe PUTTYGEN.EXE等一些工具) TortoiseSVN
安装好以上三个软件.
执行 PAGEANT.exe 文件,点 Load,选中刚才产生的svnuser.key文件 .
然后可能要输入密码,请输入在执行 ssh-keygen命令时,输入的密码.
然后点 save private key.,这里保存为 svnuser.ppk
执行putty.exe
新建一个session,输入名字(例如svn),在host name填对应的svn服务器地址(假设为svnuser1@服务器IP 或者 svnuser2@服务器IP,如果只填IP的话,后面在访问SVN的时候,会提示输入用户名),端口默认22,在connection--ssh--auth里面,选择自己刚生成的putty对应格式的私钥
然后保存此 session
执行 PAGEANT.EXE,双击系统托盘程序图标,在弹出的窗口点add key,选中先前产生的.ppk文件,然后关闭窗口即可.
下面说TortoiseSVN的使用.
网上说需要在setting->network里面做设定,其实这一步是多余的.TortoiseSVN安装后不做任何修改就可以使用的.
比如需要从 服务器checkout code,
鼠标右键 ->check out->url位置填 svn+ssh://svn/svnres/project1 即可.
这里有需要注意的 svn 这个名字必须与putty配置中的 session名字相同.(这是必须的).
url 的格式为 svn+ssh://svn/后面跟代码仓库的绝对PATH.,比如当前Demo介绍 代码仓在 /svnres/project1
AnkhSvn的使用url,也是同上,具体使用,请google .
总结,上面在服务器上面创建了两个用户分别是 svnuser1 svnuser2
这两个用户有各自的key文件和用户名,所在putty配置的hostname那里 username@ip,需要根据实际情况修改.
他们都可以读写仓库仓里面的数据.如果有新的用户需要访问这个代码仓,只需要将他的用户加入svnuser用户组即可.更多的项目类似做法.
如果不想让svnuser2 读写这个项目,只需要执行 delgorup svnuser2 svnuser 即可.
日志也会记录是svnuser1还是svnuser2做的修改.
下面说下安全性.
大家看到这里,有没有想到一个安全性的问题.做为程序员,严密的逻辑还是需要的.
既然我们给了key给TEAM中的人员,他们使用对应的 KEY,可以通过putty直接就ssh到服务器.
如果他稍微聪明点,就知道我们的code里放在哪个位置在.
拿本例来说.
rm -rf /svnres/project1 后果会怎么样??????????????????
这样的问题该如何解决.
也许有人会想到
chown root:root /svnres
这样 svnuser组用户无法删除/svnres/project1目录(因为他只有读的权限).
那执行 rm -rf /svnres/project1/* 呢
网上有人说可以加 a 属性,就只可以写不可以删.
但加了这个权限后,客户端无法commit.说权限不够.所以此方法行不通.
1.安装必要的一些软件.
$apt-get install subversion openssh-server
2.创建代码库.
//创建两个用户 svnuser1,svnuser2
$adduser svnuser1 $adduser svnuser2
//创建用户组. svnuser
$addgroup svnuser
//将svnuser1 svnuser2 加入 用户组svnuser
$addgroup svnuser1 svnuser
$addgroup svnuser2 svnuser
$mkdir /svnres/project1
$svnadmin create /svnres/project1
$chown -R root:svnuser /svnres/project1
$chmod -R o-rx /svnres/project1 //此句是禁目除 svnuser 组以外的人访问代码仓.
通过以上的操作,名为project1的代码仓就已经创建好了
3.加入代码到代码仓.有很多方法.下面只讲在服务器上面添加的一种简单方法.
这里假设你的代码放在 /project1 目录下面
$svn import -m "一些注释信息" /project1 file:///svnres/project1
这里完成了添加代码进代码仓.
这里还有一点要注意的就是用户权限.
我们需要的是 svnuser 组的用户都可以读写代码仓.
所以还需要做一件事 .
$chmod g+w /svnres/project1/db/rep-cache.db
文件<span style="font-family: Arial, Helvetica, sans-serif;">/svnres/project1/db/rep-cache.db 在svnadmin create后是不存在的,往代码仓增代码后,此文件才会出现.</span>到这一步,svn 代码仓已经建好了
4.下面导出密钥KEY给客户端使用.
切换到svnuser1 和svnuser2用户.
分别执行 ssh-keygen -t rsa -b 1024 -f svnuser.key
这过程可以输入密码也可以不输入密码 .
执行后会产生两个文件
svnuser.key.pub svnuser.key
其中文件 svnuser.key是给终端使用的.
执行以下命令
mkdir ~/.ssh mv svnuser.key ~/.ssh/authorized_keys
这里需要注意文件名必须为 authorized_keys
想办法把 svnuser.key文件复制到终端系统.
=======================================================
下面介绍客户端的使用 .
由于我只在windows下面使用 vs2008,所以就不介绍别的工具具体使用 .
vs2008要加入svn支持的话,需要下载此三个软件.
AnkhSvn putty.zip(包含 putty.exe PAGEANT.exe PUTTYGEN.EXE等一些工具) TortoiseSVN
安装好以上三个软件.
执行 PAGEANT.exe 文件,点 Load,选中刚才产生的svnuser.key文件 .
然后可能要输入密码,请输入在执行 ssh-keygen命令时,输入的密码.
然后点 save private key.,这里保存为 svnuser.ppk
执行putty.exe
新建一个session,输入名字(例如svn),在host name填对应的svn服务器地址(假设为svnuser1@服务器IP 或者 svnuser2@服务器IP,如果只填IP的话,后面在访问SVN的时候,会提示输入用户名),端口默认22,在connection--ssh--auth里面,选择自己刚生成的putty对应格式的私钥
然后保存此 session
执行 PAGEANT.EXE,双击系统托盘程序图标,在弹出的窗口点add key,选中先前产生的.ppk文件,然后关闭窗口即可.
下面说TortoiseSVN的使用.
网上说需要在setting->network里面做设定,其实这一步是多余的.TortoiseSVN安装后不做任何修改就可以使用的.
比如需要从 服务器checkout code,
鼠标右键 ->check out->url位置填 svn+ssh://svn/svnres/project1 即可.
这里有需要注意的 svn 这个名字必须与putty配置中的 session名字相同.(这是必须的).
url 的格式为 svn+ssh://svn/后面跟代码仓库的绝对PATH.,比如当前Demo介绍 代码仓在 /svnres/project1
AnkhSvn的使用url,也是同上,具体使用,请google .
总结,上面在服务器上面创建了两个用户分别是 svnuser1 svnuser2
这两个用户有各自的key文件和用户名,所在putty配置的hostname那里 username@ip,需要根据实际情况修改.
他们都可以读写仓库仓里面的数据.如果有新的用户需要访问这个代码仓,只需要将他的用户加入svnuser用户组即可.更多的项目类似做法.
如果不想让svnuser2 读写这个项目,只需要执行 delgorup svnuser2 svnuser 即可.
日志也会记录是svnuser1还是svnuser2做的修改.
下面说下安全性.
大家看到这里,有没有想到一个安全性的问题.做为程序员,严密的逻辑还是需要的.
既然我们给了key给TEAM中的人员,他们使用对应的 KEY,可以通过putty直接就ssh到服务器.
如果他稍微聪明点,就知道我们的code里放在哪个位置在.
拿本例来说.
rm -rf /svnres/project1 后果会怎么样??????????????????
这样的问题该如何解决.
也许有人会想到
chown root:root /svnres
这样 svnuser组用户无法删除/svnres/project1目录(因为他只有读的权限).
那执行 rm -rf /svnres/project1/* 呢
网上有人说可以加 a 属性,就只可以写不可以删.
但加了这个权限后,客户端无法commit.说权限不够.所以此方法行不通.
相关文章推荐
- Ubuntu 12.04配置SSH
- ubuntu 12.04 ssh 远程登录配置
- ubuntu 12.04 下安装 、配置、启动 FTP、SSH、NFS服务
- ubuntu 12.04配置SSH---为远程登录会话和其它网络服务提供的协议
- vmware下配置主机ssh连接虚拟机(Ubuntu 12.04 LTS)
- ubuntu 12.04中安装配置svn服务器
- ubuntu下svn的安装与配置(转)
- 远程连接Linux (Ubuntu配置SSH服务) 端口22
- Ubuntu下SVN服务器的安装和配置
- ubuntu 下 svn的安装和配置
- ubuntu下架设svn服务器及在windows建立svn+ssh客户
- svn + ssh 完全配置手册
- ubuntu ssh 服务安装 及 防火墙配置
- 配置ubuntu下svn和apache不允许匿名访问
- Ubuntu 7.10配置SSH服务
- Ubuntu 上配置 SVN(subversion) 服务器
- SVN在ubuntu上的安装配置(简介)
- Ubuntu安装和配置SVN
- UBUNTU的IP配置和SSH开启
- UBUNTU的IP配置和SSH开启