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://[email protected]/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端口,這樣的話回家下載代碼版本庫的話,只需要登陸***然後再拉取代碼版本庫就可以了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章