1.使用 git 客戶的生成公私鑰:id_rsa、id_rsa.pub
1.1設置Git的user name和email:
$ git config --global user.name "xxx" $ git config --global user.email "xxx.mail@xxx.com"
1.2.生成SSH密鑰過程:
1.2.1.檢查是不是已經存在密鑰(能進去說明已經存在,就刪掉文件夾,重新創建):
cd ~/.ssh
1.3.生成 SSH 密鑰:
$ ssh-keygen -t rsa -C "xxx.mail@xxx.com"
按3個回車,密碼為空。
1.4.文件存放位置 ~/.ssh,如果是window的話就在:C:\Users\Administrator.ssh 下面,當然如果你不是 Administrator 用戶的話,需要換成對應的用戶。
2.設置 SourceTree 的 SSH客戶端
配置SourceTree 的 SSH 客戶的為:OpenSSH
1.1.工具->選項
1.2.設置 OpenSSH,這時候,SSH 密鑰這一欄自然會去選擇當前用戶下的 .ssh 目錄下的 id_rsa 這個私鑰:
3.添加 ~/.ssh/id_rsa.pub 文件內容到 git 服務器里面去
3.1.比如你的 git 服務是 github,那么你需要在 https://github.com/settings/keys 里面添加 SSH key ,粘貼id_rsa.pub 到 下面的粘貼板,title隨便命名。
3.2測試
$ ssh git@github.com PTY allocation request failed on channel 0 Hi piwang1994! You've successfully authenticated, but GitHub does not provide shell access. Connection to github.com closed.
4.SourceTree 來下載 git 項目
- 復制你的 git 地址:https://github.com/piwang1994/big12
- 從 SourceTree 里面新建一個地址,這時候你發現你本地已經可以下載遠程的 git 代碼
結果:
5.補充說明
1.ssh-keygen 是公鑰私鑰的非對稱加密方式:
- 1.1公鑰:用於向外發布,任何人都能獲取。
- 1.2.私鑰:要自己保存,切勿給別人
2.公鑰私鑰加解密的原理
- 2.1.客戶端把自己的公鑰存放到要鏈接的遠程主機上(相當於我們把自己的 id_rsa.pub 存放到 git 服務器上)
- 2.2.客戶端要鏈接遠程主機的時候,遠程主機會向客戶的發送一條隨機的字符串,客戶的收到字符串之后使用自己的私鑰對字符串加密然后發送到遠程主機,遠程主機根據自己存放的公鑰對這個字符串進行解密,如果解密成功證明客戶端是可信的,直接允許登錄,不在要求登錄。