git如果使用http/https協議,每次push時都會提示輸入用戶名和密碼,使用ssh秘鑰(git協議)則可以避免這一麻煩。
1.添加ssh key私鑰
依次執行以下命令:
exec ssh-agent bash
eval ssh-agent -s
ssh-add "C:\Users\Administrator\.ssh\id_rsa"
說明:
1.命令ssh-add "C:\Users\Administrator\.ssh\id_rsa"中,引號中的路徑就是你私匙文件的路徑,路徑需要使用英文雙引號包裹。
Identity added: C:\Users\Administrator\.ssh\id_rsa (C:\Users\Administrator\.ssh\id_rsa)
提示Identity added :說明已添加成功
添加成功后在C:\Users\Administrator\.ssh\目錄下會有三個文件
id_rsa
id_rsa.pub
known_hosts
需要注意的是在ssh add 之前執行一條 “ssh-add -D” 命令,這是用來清除已有的私鑰。
2.測試ssh key
ssh -T git@192.168.31.1
說明:
1.命令"ssh -T git@192.168.31.1"中,@后面替換成git服務器的ip地址。
提示 Welcome to GitLab, @xxx! 說明加入ssh成功。@后面的xxx為git用戶名。
就是免密push/pull代碼了。
遇到的問題
1.windows下git pull/push提示輸入密碼,git@192.168.31.1's password:Permission denied, please try again.
原因:SSH密鑰對不匹配。這個錯誤主要密匙全路徑名不相符,結果導致本地的SSH工具無法找到到正確的密匙。
解決:首先檢查生成的兩個文件id_rsa和id_rsa.pub是否確實在~/.ssh路徑下,如過不是,把它們移過去。
其次是非常重要的一點,如果你在步驟2中自定義了ssh key的文件名,那么原因就在於你的命名與ssh內設定的名字不一致,因此需要手動添加秘鑰。很多教程大概不是windows系統。。直接讓輸入命令
ssh-add ~/.ssh/你的文件名
其他常用操作
1.在git bash輸入remote -v查看當前的remote url
git remote -v
若得到的連接是以http/https開頭的,是http/https協議,git開頭的是git協議
2.git從http/https協議替換成git協議
git remote set-url origin git@192.168.31.1:8099/test.git
done!