1. 程式人生 > >利用win10的Linux子系統在PC上搭建git遠端倉庫

利用win10的Linux子系統在PC上搭建git遠端倉庫

在windows上搭建git遠端倉庫一直比較麻煩,主要是由於windows的ssh服務支援比較難辦。Microsoft Store現在提供了一個名為Ubuntu的免費App,執行後可以在windows10上建立一個沒有圖形介面的ubuntu子系統並自帶ssh服務等很多應用。這個可以幫助我們在windows上搭建git遠端倉庫,並讓區域網內的本地機器使用。

在win10上安裝ubuntu子系統

在控制面板中開啟linux子系統

在安裝和使用ubuntu子系統前,需要先在win10上允許啟用Linux子系統的功能。 進入Control Panel -> Programs -> Turn Windows features on or off,之後在彈窗中找到並勾選 Windows Subsystem for Linux,點選OK後會重啟電腦。 win10開啟Linux子系統功能

下載安裝Ubuntu子系統

接下來,在開始選單中找到微軟應用商店,即Microsoft Store。在Microsoft Store中搜索“Ubuntu”,然後選擇一個版本點選安裝(版本差別不大)。 在Microsoft Store中搜索並安裝Ubuntu子系統應用 安裝完成後即會執行一個Ubuntu終端。 Ubuntu子系統終端

在Ubuntu子系統上安裝配置git遠端倉庫

建立一個git倉庫

Ubuntu子系統預設安裝在C盤,如果PC上有其他硬碟比如D、E盤會被掛載在"/mnt/“目錄下,如E盤的路徑即”/mnt/e/"。 我們在PC上找到喜歡的地方建立一個git倉庫。比如在E盤上新建一個名為MyRemoteGitRepo 的資料夾,Ubuntu子系統中對應的路徑即為"/mnt/e/MyRemoteGitRepo/"。在終端裡,我們可以執行以下命令進入MyRemoteGitRepo

並建立一個空git倉庫

cd /mnt/e/MyRemoteGitRepo
git init --bare 
git config --global user.name "you name it"
git config --global user.email "[email protected]"

這樣我們就建立了一個裸倉庫、設定了使用者名稱和聯絡郵箱。注意這個倉庫沒有工作區,純粹用來共享資訊。

配置ssh服務

在PC上配置ssh服務引數

git遠端倉庫建好了,但是想讓其他倉庫與之進行連線,我們需要開啟ssh服務並作配置。 開啟ssh服務端的配置檔案/etc/ssh/sshd_config:

sudo vi /etc/ssh/sshd_config

port 預設為22但是已被佔用,取消註釋並修改為2200; 取消行註釋 ListenAddress; 取消行註釋 PubkeyAuthentication 並設定為 yes; 取消行註釋 AuthorizedKeysFile; 取消行註釋 PasswordAuthentication 並設定為 yessshd_config 儲存退出後,啟動ssh服務端:

sudo service ssh start

檢查ssh服務執行狀態:

sudo service ssh status

看到 sshd is running 的資訊,說明ssh服務端啟動。 區域網下進行連線需要知道PC的Private IP:

ifconfig

ifconfig 圖中wifi0下的inet後面的 192.168.1.104 即為我PC的內網IP。

在本地機器生成ssh金鑰,並新增到windows10機器的authorized_keys中

所謂本地機器是指開發時git本地倉庫所在的機器。本地機器想要連線到在PC上建立的git遠端倉庫,需要通過金鑰進行身份驗證。我們要做的是在本地機器上生成ssh金鑰對,並將公鑰新增到 win10 ssh服務的授權金鑰檔案(/etc/ssh/authorized_keys)裡。下面以本地機器為Ubuntu系統為例示範此過程(如果本地機器也是windows系統可以在powershell中執行相同命令)。 在本地機器上,開啟終端,輸入:

cd ~/.ssh
ssh-keygen git_key

會得到一對公私金鑰。將私鑰 git_key 保留,將公鑰 git_key.pub 用scp命令拷貝至PC使用者git的home目錄下:

sudo tcp -P 2200 [email protected]:~/

在 /home/git/ 下找到 git_key.pub 檔案,將其中內容複製貼上到 /etc/ssh/authorized_keys中 (若名為authorized_keys的檔案不存在,就新建一個)。之後重啟ssh服務:

sudo service ssh restart

建立git本地倉庫並連線到win10上的遠端倉庫

在本地機器上進入想要建庫的資料夾,比如 ~/workspace;用git clone命令來把遠端倉庫克隆到本地,用到的命令格式為: sudo git clone ssh://<PC_PrivateIP>:<sshd_port><path_to_remote_repo> 本例中,具體為:

cd ~/workspace
sudo git clone ssh://192.168.1.104:2200/mnt/e/MyRemoteGitRepo

到此應該會在終端裡看到git進行了克隆,並報告一個資訊 “warning: You appear to have cloned an empty repository.”, 這是因為我們並未在遠端倉庫上建立任何東西的原因,但是PC端的git遠端倉庫已經搭建好並且成功克隆到了本地!