SSH+SVN搭建及配置

一.SSH+SVN搭建及配置

注意,服务器ssh服务必须开22端口,否则无法访问
1.安装ssh服务和subversion服务:

yum install openssh-server  
yum install subversion

2.创建登陆svn的系统用户

useradd drliaoku

提示此系统用户必须是可以登陆的。如果不可以登陆,在链接svn时,会提示链接不上。

3.建立svn服务存储目录:
mkdir /svndata

4.创建svn代码版本库

svnadmin create drkuliao
svnadmin create drkuliaowe

[root@git-server drkuliao]# pwd
/svndata/drkuliao
[root@git-server svndata]# ls
drkuliao  drkuliaoweb
[root@git-server svndata]# cd drkuliao
[root@git-server drkuliao]# ls
conf  db  format  hooks  locks  README.txt
[root@git-server drkuliao]# cd ../drkuliaoweb/
[root@git-server drkuliaoweb]# pwd
/svndata/drkuliaoweb
[root@git-server drkuliaoweb]# ls
conf  db  format  hooks  locks  README.txt

5.为svn代码版本库赋予ssh+svn用户组的权限

chown -R drliaoku.drliaoku svndata
[root@git-server svndata]# ll
total 8
drwxr-xr-x 6 drliaoku drliaoku 4096 May  6 08:54 drkuliao
drwxrwxr-x 6 drliaoku drliaoku 4096 May  6 11:43 drkuliaoweb

6.配置ssh+svn用户的密钥:

切换到svn的管理用户:
[root@git-server svndata]# su – drliaoku
生成公私钥文件:
[drliaoku@git-server .ssh]$ ssh-keygen -t rsa -f drliaoku
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in drliaoku.
Your public key has been saved in drliaoku.pub.
The key fingerprint is:
ff:e1:72:39:f1:6a:56:21:b7:93:55:6a:e1:56:43:71 drliaoku@git-server
The key's randomart image is:
+--[ RSA 2048]----+
|              .oE|
|              ..+|
|             . +o|
|            . B .|
|        S    = = |
|         .  . =  |
|          . .= . |
|          .o*..  |
|           =+o   |
+-----------------+
[drliaoku@git-server .ssh]$ ls
drliaoku  drliaoku.pub
生成之后会产生两个文件,drliaoku  和drliaoku.pub,其中前者为密钥,后者为公钥

进入.ssh目录,配置密钥,将drliaoku.pub的内容导入到authorized_keys文件内,为了服务器安全,需要配置禁止ssh+svn用户登录服务器,但是可以访问svn服务。

[drliaoku@git-server ~]$ cat /home/drliaoku/.ssh/drliaoku.pub >>/home/drliaoku/.ssh/authorized_keys
[drliaoku@git-server ~]$ cat /home/drliaoku/.ssh/authorized_keys
ssh-rsa AAAAB567NzaCABIwAAAQEAoEDg3UOu21d4E2MhoT3q2AJ4Ss+YLrlsZg7k6aFwxpQVWPEXPAX9x7ks2k4GDk6MHzhPd+uhfDSu3VtkxXUd9BtL7G3oScOBQbaLQxh7ZzCUp+yCfwXdgJ+ycoDJTvgZ6wMq9xPhch8H7gnWTx9DXkSdbmvOd3Q7g6kdZhCt37exJeJYChb4CT4NAnGIHSKEXjOFPZPkNaNBJ8kqGuvBemuhJQwpV2r9atNqEXx6rlIunqQF1lZ8KH3tCiwHrNbYJore2UfXY2+/joJHtrshXRGfu3CEXuwhgiBnudhTu6VIgKrAZ0UfuoOE/dN4y8f/qhcPg4eoxQ== drliaoku@git-server

在密钥的前面加上一下内容:

command="/usr/bin/svnserve -t -r /svnserver --tunnel-user=ppwenxue",no-port-forwarding,no-pty,no-agent-forwarding,no-X11-forwarding

command=""                       #用户登录后执行的命令
/usr/bin/svnserve   -t           # 以隧道模式启动svnserver
-r /svnserver                       # 指定svn库路径。
 --tunnel-user=ppwenxue   # 指定svn用户。

注意:文件名称必须为authorized_keys并且这个文件的权限必须是600权限才行

SSH+SVN搭建及配置

二.服务端防火墙配置:

需要工具有ipset和iptables结合来实现:
安装:
yum –y install ipset iptables

创建ipset集合:

ipset create svn_ssh_src hash:net       //创建集合名称
ipset add svn_ssh_src 网段或IP     //向集合内插入网段或IP
/etc/init.d/ipset save      //保存ipset集合到/etc/sysconfig/ipset配置文件内,防止服务器重启丢失。
iptables -A INPUT -p tcp -m set --match-set svn_ssh_src src -m tcp --dport 22 -j ACCEPT
//只允许ipset集合内的网段或者ip访问服务器的22端口,这样的话管理比较方便,不用每次写iptables规则,只需要维护ipset集合就可以了。

以上为服务器配置

三.以下为windows客户端连接的配置

1.在windows下通过PuTTY进行服务器登陆

(1) 下载PuTTY相关文件
下载以下文件:pageant.exe, putty.exe, puttygen.exe
Windows上安装puTTY软件,主要是用来加载上传到windows上的服务器私钥文件drliaoku生成drliaoku.ppk文件的。

(2) 生成PuTTY密钥ppk文件

将服务器上生成的私钥文件drliaoku文件(密钥)拷贝到windows中.
SSH+SVN搭建及配置
到puTTY安装目录找到puyytgen.exe来加载服务器上的私钥drliaoku生成drliaoku.ppk文件
SSH+SVN搭建及配置
SSH+SVN搭建及配置
SSH+SVN搭建及配置
到此处ppk文件生成完成

(3)加载生成的ppk密钥文件,然后通过puttygen.exe来登陆服务器
SSH+SVN搭建及配置
SSH+SVN搭建及配置
最后点击Add Key,增加key

(4) 使用PuTTY登陆服务器
打开PuTTY.exe,在session中输入服务器地址,端口号:22。在Connection->SSH->Auth中选择Browse,选择刚才生成的drliaoku.ppk文件,点击登录。此时提示输入passphrase登陆,如果输入之后能登陆系统,则说明设置成功。
SSH+SVN搭建及配置
SSH+SVN搭建及配置
点击open,出现
SSH+SVN搭建及配置
SSH+SVN搭建及配置
没有加隧道模式,导致的直接登陆到了服务器。
现在在/home/drliaoku/.ssh/authorized_keys 这个文件中加入隧道模式

[drliaoku@git-server .ssh]$ vim authorized_keys 
command="/usr/bin/svnserve -t -r /svndata --tunnel-user=drliaoku",no-port-forwarding,no-pty,no-agent-forwarding,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAoEDg3UOu21d4E2MhoT3q2AJ4S
s+YLrlsZg7kQVWPEXPAX9x7ks2k4GDk6MHzhPd+uhfDSu3VtkxXUd9BtL7G3oScOBQbaLQxh7ZzCUp+yCfwXdgJ+ycoDJTvgZ6wMq9xPhch8H7gnWTx9DXkSdbmvOd3Q7g6kdZhCt37exJeJYChb4CT4NAnGIHSKEXjOFPZPkNaNBJ8kqGuvBemHp
z4eVw/BGoAuhJQwpV2r9atNqqQF1lZ8KH3tCiwHrNbYJore2UfXY2+/joJHtrshXRGfu3CEXuwhgiBnudhTu6VIgKrAZ0UfuoOE/dN4y8f/qhcPg4eoxQ== drliaoku@git-server

再次登陆服务器,此时已经登陆不上服务器了。
因为设置ppwenxue帐号为隧道模式访问svn服务,不能直接登录服务器。

2.windows端svn客户端软件安装
软件包:
SSH+SVN搭建及配置
SSH+SVN搭建及配置

设置svn的url
svn+ssh://drliaoku@192.10.1.33/drkuliaoweb

SSH+SVN搭建及配置
到此处配置完成
检查版本库代码
SSH+SVN搭建及配置
SSH+SVN搭建及配置
检出成功

四.此方案的安全方面的介绍

1.提取版本库代码的权限控制方面:

每个用户要想更新版本库时,必须要把自己电脑的公钥放到svn版本库的服务器上,这样才能更新代码版本库,要是有用户离职的话,直接在服务器上去掉用户的公钥就可以了,这样用户就不会在有权限更新代码了

2.各个的代码版本库目录权限的控制:

直接在root账户下登陆服务器,执行代码的版本库创建命令就可以了
svnadmin create /svndata/drkuliaotest
不需要对代码的版本库目录文件权限做任何改动的,同时也不需要对版本库的中conf目录下的任何文件做改动的,下面的这些文件只需要保持默认就可以了

[root@git-server conf]# ls
authz passwd svnserve.conf
[root@git-server conf]# pwd
/svndata/drkuliao/conf

3.对于服务器安全考虑,权限的控制

对/etc/ssh/sshd_config配置文件中sshd服务端口的设置

[root@VM_82_178_redhat .ssh]# grep Port /etc/ssh/sshd_config 
Port 22
Port 16070
#GatewayPorts no
[root@VM_82_178_redhat .ssh]# ss -lntup|grep sshd
tcp    LISTEN     0      128       *:22                    *:*                   users:(("sshd",pid=6976,fd=4))
tcp    LISTEN     0      128       *:16070                 *:*                   users:(("sshd",pid=6976,fd=3))

然后在iptables中进行访问22端口的iptables配置策略的设置

允许公司的IP地址才能访问22端口,其他的地址全部拒绝掉

同时也可以配置,只允许的IP地址访问22端口,这样的话回家下载代码版本库的话,只需要登陆***然后再拉取代码版本库就可以了

相关文章
相关标签/搜索