OS:ubuntu-16.04-server
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install openssh-server
sudo service ssh restart
# 安裝 git
sudo apt-get install git-core
# 新增專用群組 gitgroup
sudo groupadd gitgroup
# 新增 gituser 並指定成 gitgroup & 設定密碼
sudo useradd -s /bin/bash -g gitgroup -m -d /home/gituser gituser
sudo passwd gituser
# 建立 git repository資料位置
sudo mkdir -p /opt/gitRepository
# 變更擁有者,主要是為了指定群組
sudo chown gituser:gitgroup -R /opt/gitRepository
# 建立專案資料夾並初始化
cd /opt/gitRepository
mkdir project_name.git
cd project_name.git
git init --bare --shared
sudo useradd -s /bin/bash -g gitgroup -m -d /home/spike spike
sudo passwd spike
這樣spike就可以透過 spike@192.168.200.212:/opt/gitRepository/project_name.git
來存取git
只不過這樣是透過帳號密碼來存取,如果要更安全點可以透過ssh key
在Server上
# 產生 ssh key
ssh-keygen
# 將公鑰內容複製到 authorized_keys
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
# 私鑰自己存下來後可以刪除 server上的私鑰
mv ~/.ssh/id_rsa ~
id_rsa.pub:公開金鑰(public key),這是可以對外公開的金鑰,之後要將它放在遠端的 Linux 伺服器上作認證使用。
id_rsa:私密金鑰(private key),這是要保護好的金鑰,它等同於你的 Linux 密碼,放在自己的電腦中。
在windows上可以透過 puttygen 來產生
但是要注意給出去的公鑰是紅色框框內的,直接複製給對方,puttygen 存下來的公鑰檔是無法相容
然後你自己要留存的要匯出成 OPENSSH Key 的格式
Server 的人如果是接收別人做好的公鑰會更省事點,帳號也不用給密碼了
sudo useradd -s /bin/bash -g gitgroup -m -d /home/${user} ${user}
sudo mkdir -p /home/${user}/.ssh
sudo vi /home/${user}/.ssh/authorized_keys
sudo chown ${user}:gitgroup -R /home/${user}/.ssh
在 Linux 伺服器的部份,如果要提高安全性,可以在伺服器上的 /etc/ssh/sshd_config 中修改以下的設定,停用密碼認證的登入方式,只允許金鑰認證:
sudo nano /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes
這樣可以避免網路上一些亂猜密碼的攻擊。不過使用這樣的方式要先留意自己的金鑰是否設定正確,確認可以不需要密碼登入之後才進行這樣的設定,否則停用密碼登入之後,如果沒有金鑰或是沒有將公開金鑰放在伺服器上,就會完全無法登入該 Linux 伺服器。最後記得重新啟動 sshd:
/etc/init.d/sshd restart
sudo systemctl reload sshd
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04
http://ubuntuhandbook.org/index.php/2016/04/enable-ssh-ubuntu-16-04-lts
http://blog.alantsai.net/2015/09/use-ssh-in-windows-for-github.html