標籤:style blog http color os io strong 檔案
最近要做一個源碼管理伺服器,權衡了一下還是git最適合,搭建伺服器前看了網上一些windows下搭建git伺服器的文章,感覺還比較簡單,沒有太多需要配置的地方,於是開始動手。
我選擇的是 gitfor windows + Tortoisegit + Copssh
gitfor windows http://msysgit.github.io/ 最新版的 Git-1.9.4-preview20140611
putty 用來測試ssh串連 同時還需要工具 puttygen 用來轉換 copssh產生的私密金鑰,它們兩個格式不一樣,串連的時候不注意就會在這裡出問題,我就栽到這個坑裡。
先安裝Copssh 再 gitfor windows ,Tortoisegit 安裝過程比較簡單,不想羅列太多的圖片,不清楚怎麼安裝的去找度娘。
安裝好之後,有幾點需要注意的:
1. 配置Tortoisegit:TortoiseGit>Settings
配置好git路徑
2. 建立一個git賬戶管理員權限
3. 在copssh裡啟用 git 使用者
使用者啟用成功,下面產生公開金鑰和私密金鑰
輸入密碼,此密碼為ssh密鑰登陸密碼。私密金鑰名稱,私密金鑰預設放在 copssh 安裝目錄 \ICW\home\使用者名稱 下面 ,公開金鑰在 \ICW\home\使用者名稱\.ssh 下面 名稱為:authorized_keys
ok,公開金鑰跟私密金鑰產生成功,下面開啟puttygen 將私密金鑰轉換成 putty格式
點擊 Load 選擇剛才產生的 private_key.ppk 檔案,輸入密碼
點擊 Save private key 儲存私密金鑰,注意不要覆蓋原來的私密金鑰,copssh 私密金鑰格式跟 putty私密金鑰格式不一樣,測試ssh串連時用 puttygen 產生的私密金鑰
用戶端git串連ssh伺服器的時候要用copssh產生的私密金鑰。 我在剛開始搭建伺服器的時候用戶端用的putty產生是私密金鑰,putty測試連接沒有問題,用
git 串連是老是報沒有許可權,鬱悶了一天后來才發現問題出在這裡。
4. 找到copss安裝目錄C:\Program Files (x86)\ICW\etc
下面的sshd_config,跟ssh_config 檔案
PasswordAuthentication 設定為 no
port 設定為 22
防火牆開啟22連接埠 用 telnet 命令連結查看是否能夠串連,沒問題接著下面走
根據自己的安裝目錄, 將C:\Program Files (x86)\Git\libexec\git-core目錄下的git.exe , git-receive-pack.exe , git-upload-archive.exe , git-upload-pack.exe複製到C:\Program Files (x86)\ICW\bin目錄下
C:\Program Files (x86)\Git\bin 目錄下的libiconv-2.dll複製到 C:\Program Files (x86)\ICW\bin目錄下
用putty 測試是否能夠連上伺服器
填上伺服器名稱連接埠
Author選項,匯入私密金鑰點擊 open ,如果能夠串連說明ssh伺服器搭建成功。
5. 用戶端Git配置
(最好的做法是在用戶端用 ssh-keygen -t rsa 產生公開金鑰跟私密金鑰 把公開金鑰加到 伺服器 \ICW\home\使用者名稱\.ssh 下面 authorized_keys 裡面
私密金鑰放到 用戶端 使用者名稱/.ssh 目錄下)
將產生的私密金鑰放到用戶端 使用者名稱/.ssh 目錄下
同目錄下添加 config檔案,注意沒有副檔名
檔案輸入如下內容
Host server #執行git命令時伺服器別名#
HostName 192.168.1.110 #這裡是你伺服器的地址#
User git #登陸伺服器使用者名稱#
IdentityFile ~/.ssh/private_key.ppk #私密金鑰地址#
6. 伺服器端 在\ICW\home\使用者名稱 下用Tortoisegit 建立一個檔案夾 test.git
右鍵 Git Create repository here.. 勾選 Make it Bare ( No working directories) 建立空倉庫
7. 用戶端執行 $git clone [email protected]:test.git 輸入密碼
ok,複製成功至此git伺服器搭建好了!
可能遇到的問題:
A. 私密金鑰不要搞混了用 putty 串連同 git 串連是用兩不同的私密金鑰,私密金鑰不對是話會報錯:
Permission denied (keyboard-interactive).
fatal:Could not read from remote repository.
如果出現這種情況不能確認是否是私密金鑰有問題時可以這樣處理:
到伺服器端啟用密碼驗證,
找到copss安裝目錄C:\Program Files (x86)\ICW\etc
下面的sshd_config,跟ssh_config 檔案
PasswordAuthentication 設定為 yes
這樣的話串連伺服器需要輸入git使用者 的使用者密碼,通過使用者名稱登陸,不走密鑰驗證,如果能串連成功,說明一定是私密金鑰問題。
B. 缺少檔案
我在複製時碰到過缺少libiconv-2.dll 的情況
git 提示 /user/bin/git-upload-pack.exe: error while loading shared libraies: libiconv-w.dd: cannot open shared object file: No such file or directory
只需將C:\Program Files (x86)\Git\bin 目錄下的libiconv-2.dll 複製到 C:\Program Files (x86)\ICW\bin目錄下就可以了
第一篇博文,沒太注意排版,目的是幫大家解決問題,如果看了我的文章真對大家有所協助請贊一下咯!