Linux 筆記 #06# 在 VPS 上自建 Git倉庫
參考:
GitHub Help: Connecting to GitHub with SSH
廖雪峰的官方網站: 搭建Git服務器
菜鳥教程: Git 服務器搭建
1. 安裝記錄(可能有錯。。。)
本地( Debian 8.8):
sudo apt-get install git git version # 確保正確安裝
root@xkfx:~# git config --global user.name "little fish" root@xkfx:~# git config --global user.email "[email protected]"
# 初始設置,作為儲存在本地的變量,會用在Git的提交日誌中
root@xkfx:~# git config user.name little fish root@xkfx:~# git config user.email little_fish@163.com
生成 ssh key (這個不是 git 命令!),
root@xkfx:~# ssh-keygen -t rsa -C "[email protected]" Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 53:f3:c5:06:28:61:3f:12:36:fc:54:c7:df:4c:9c:60 [email protected] # 已改,僅作示範The key‘s randomart image is: +---[RSA 2048]----+ | .*..+o..E...| | o.++ +o .o| | .oo + +. + | | ..o = . o| | S . | | . | | | | | | | +-----------------+
總之本地持有私匙,遠程持有對應公匙,這樣雙方才能安全通信。關於郵箱參數有啥用可以參考這個文檔(是作為 ssh key 的一個標簽,這在倉庫放在 github 上的時候會有用 ~)密碼是給私匙配的。
VPS(Centos 6 x86 bbr ):
[root@xkfx ~]# yum install git [root@xkfx ~]# git version
把有權限訪問的【終端的公匙】拷貝進去,一行一個,
root@xkfx:~# cat /root/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGetaJDc9kTMrRlw+++ve+w4gamJH2LfNC9qJa/LbvXUFkO1atJCQxn2DlaNvQxrMvSSAHRNo2MmNnxRp9Vi8sg6KawgVKx6n60maMxvMugkzV+BOm8ds+C5M+JAdRzjBzfdgWIMgdqZfyfG1sHnTg6JGvzCxJ9DigNb+2cho20CXhCv5JKsn2fHzyc75BguT8gxZ7e9vtQNWywLNNse8mCFmc28kmxXo14eDuZPbDGnEU12BO+UFVqYbeFVNLVcS8x2GiJg/Iy5pDCPScPI0iyZGor7AkI0SjfhQuc4uMDVIDWC5gp8cqudxP [email protected]
[root@xkfx ~]# sudo adduser git
[root@xkfx ~]# cd /home/git [root@xkfx git]# mkdir .ssh [root@xkfx git]# vim /home/git/.ssh/authorized_keys
[root@xkfx git]# sudo git init --bare sample.git Initialized empty Git repository in /home/git/sample.git/
出於安全性考慮,
[root@xkfx git]# sudo chown -R git:git sample.git [root@xkfx git]# vim /etc/passwd
2.基本操作嘗試
root@xkfx:~# git clone git@your ip address:/home/git/sample.git
Cloning into ‘sample‘...
ssh: connect to host your ip address port 22: Connection refused
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
---------------------------------------------------------------------------------------
root@xkfx:~# eval $(ssh-agent -s)
Agent pid 16083
root@xkfx:~# ssh-add ~/.ssh/id_rsa
Enter passphrase for /root/.ssh/id_rsa:
Bad passphrase, try again for /root/.ssh/id_rsa:
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
root@xkfx:~# ssh -T git@your ip address
ssh: connect to host your ip address port 22: Connection refused
---------------------------------------------------------------------------------------
root@xkfx:~# ssh -T [email protected]
The authenticity of host ‘github.com (192.30.253.112)‘ can‘t be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘github.com,192.30.253.112‘ (RSA) to the list of known hosts.
Permission denied (publickey).
---------------------------------------------------------------------------------------
換菜鳥教程從頭敲一遍 失敗
換了個 VPS 按照菜鳥教程重敲了一遍 就成功了。
root@xkfx:~# groupadd git root@xkfx:~# useradd git -g git root@xkfx:~# cd /home/git/ root@xkfx:/home/git# mkdir .ssh root@xkfx:/home/git# chmod 755 .ssh root@xkfx:/home/git# touch .ssh/authorized_keys root@xkfx:/home/git# chmod 644 .ssh/authorized_keys root@xkfx:/home/git# cd /home root@xkfx:/home# mkdir gitrepo root@xkfx:/home# chown git:git gitrepo/ root@xkfx:/home# cd gitrepo root@xkfx:/home/gitrepo# git init --bare runoob.git Initialized empty Git repository in /home/gitrepo/runoob.git/ root@xkfx:/home/gitrepo# chown -R git:git runoob.git # 必要的!否則會因為權限不夠無法 push root@xkfx:/home/gitrepo# vim /home/git/.ssh/authorized_keys
mdzz@LAPTOP-QGECNCGO MINGW64 /d/labs
$ git clone git@????????????:/home/gitrepo/runoob.git
Cloning into ‘runoob‘...
warning: You appear to have cloned an empty repository.
3. 應用
存放不願公開的項目
作為網盤方便地保存重要文件
Linux 筆記 #06# 在 VPS 上自建 Git倉庫