git服務器端:環境是Centos 7.5,Git是 1.8.3.1
git客戶端:windows7,Git
1.驗證系統是否有git,沒有則安裝
git --version驗證,沒有則yum -y install git
用rpm -qa | grep git可查看git安裝的軟件包
2.驗證是否有git用戶,沒有則添加
id git驗證,沒有則useradd git和添加密碼passwd git,輸2次git即可
3.創建git服務端版本倉庫
這裏我選用目錄爲/var/data/git/learngit.git
A:創建目錄:mkdir -p /var/data/git/learngit.git
B:初始化庫:git init --bare /var/data/git/learngit.git
C: Git 倉庫的 owner 修改爲 git用戶:cd /var/data/git和 chown -R git:git learngit.git/
4.客戶端下載遠程倉庫
windows系統上我選用目錄/d/IdeaProjects/(d爲D盤)爲操作目錄
啓動客戶端 Git Bash.exe,然後進入該目錄執行遠程clone操作,如下命令
git clone [email protected]:/var/data/git/learngit.git
第一次遠程連接會提示如下內容,輸入yes即可
-
The authenticity of host ‘192.168.3.10 (192.168.3.10)‘ can‘t be established.
-
ECDSA key fingerprint is SHA256:HEaAUZgd3tQkEuwzyVdpGowlI6YKeQDfTBS6vVkY6Zc.
-
Are you sure you want to continue connecting (yes/no)?
提示輸入密碼時輸入服務器端的git的密碼git即可
然後該目錄下會出現一個名爲learngit的文件夾,它就是本地倉庫(和learngit.git對應),進入該目錄執行vi test.txt命令,輸入內容,然後git add test.txt和git commit -m "add test.txt"是添加進本地倉庫,執行git push -u origin master(-u是第一次遠程添加加上,後續不用加了就,origin是默認的遠程庫名稱,master是當前主分支,開始默認這一個,可自行添加)即可推送到遠程倉庫中 。
Git還可以把本地的公鑰添加到Git服務器,就可以免去每次遠程操作都輸入密碼了
5.生成公私鑰,添加到服務器
以下是客戶端創建ssh私鑰和拷貝的過程,如果您有私鑰越過創建私鑰的過程。
第一步:創建客戶端的ssh私鑰和公鑰
檢查是否已經擁有ssh公鑰和私鑰:進入用戶的主目錄。
用戶主目錄:
Windows系統:C:\Users\用戶名(我用的是這個)
Linux系統:/home/用戶名
Mac系統:/Users/用戶名
然後查看是否有.ssh
文件夾,此文件夾下是否有如文件
id_rsa和id_rsa_pub(這個是所需的)
如果沒有,那麼用ssh-keygen創建ssh的私鑰。
創建公私鑰 ssh-keygen -t rsa -C "[email protected]"
-t rsa表示密鑰類型是rsa,-C選項用於添加comment,可以設置成自己的Email地址
提示passphrase時不需要設置,三次回車就行。
第二部:公鑰添加到服務器中
A:首先在服務中做些設置,vi /etc/ssh/sshd_config文件做如下修改
開啓RSA認證,將前面的
#去掉,並確保如下配置:
RSAAuthentication yes #這個沒配置也可以,不行的話你記加上
PubkeyAuthentication
yes #這個把前面#註釋去掉就行
AuthorizedKeysFile .
ssh
/authorized_keys #這個默認打開的
修改保存完後重啓服務
service sshd restart(如果不行可執行systemctl restart sshd)
B:然後cd /home/git目錄下,創建.ssh文件夾mkdir .ssh,再創建authorized_keys文件(與上面對應)touch authorized_keys
C:接下來windows系統中進入客戶端 Git Bash.exe,把剛纔創建的公鑰id_rsa.pub遠程複製到/home/git/.ssh/目錄下
命令:scp /c/Users/win7/.ssh/id_rsa.pub [email protected]:/home/git/.ssh/
輸入密碼行了
D:最後回到服務端進入/home/git/.ssh/目錄下
執行:cat id_rsa.pub >> authorized_keys就會複製成功。(其實手動複製也可以,但是不推薦,容易出錯)
現在再在客戶端
Git Bash.exe做克隆推送等操作就不用密碼了
6.禁用git用戶的shell登錄
出於安全考慮,第2步創建的git用戶不允許登錄shell,這可以通過編輯/etc/passwd文件完成。找到類似下面的一行:
1 |
|
最後一個冒號後改爲:
1 |
|
這樣,git用戶可以正常通過ssh使用git,但無法登錄shell,因爲我們爲git用戶指定的git-shell每次一登錄就自動退出。
來自:https://blog.csdn.net/qq_29175301/article/details/81207636