一.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權限才行
二.服務端防火牆配置:
需要工具有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中.
到puTTY安裝目錄找到puyytgen.exe來加載服務器上的私鑰drliaoku生成drliaoku.ppk文件
到此處ppk文件生成完成
(3)加載生成的ppk密鑰文件,然後通過puttygen.exe來登陸服務器
最後點擊Add Key,增加key
(4) 使用PuTTY登陸服務器
打開PuTTY.exe,在session中輸入服務器地址,端口號:22。在Connection->SSH->Auth中選擇Browse,選擇剛纔生成的drliaoku.ppk文件,點擊登錄。此時提示輸入passphrase登陸,如果輸入之後能登陸系統,則說明設置成功。
點擊open,出現
沒有加隧道模式,導致的直接登陸到了服務器。
現在在/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客戶端軟件安裝
軟件包:
設置svn的url
svn+ssh://[email protected]/drkuliaoweb
到此處配置完成
檢查版本庫代碼
檢出成功
四.此方案的安全方面的介紹
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端口,這樣的話回家下載代碼版本庫的話,只需要登陸***然後再拉取代碼版本庫就可以了