目录
1. 使用git命令生成公私钥
- 设置git的user name 和 email
$ git config --global user.name "xxx"
$ git config --global user.email "xxx.mail@xxx.com"
- 生成SSH密钥
2.1 检查是不是已经存在密钥
cd ~/.ssh
- 生成SSH密钥
$ ssh-keygen -t rsa -C "xxx.mail@xxx.com"
按3个回车,密码为空。
- mac 文件存放位置~/.ssh
- window 文件存放位置 C:\Users\Administrator.ssh 下面,当然如果你不是 Administrator 用户的话,需要换成对应的用户。
2. 设置sourceTree的SSH客户端
- 配置sourcetree的SSH为
OpenSSH
;如图 - 先打开工具->选项->一般->SSH客户端配置->修改为OenSSH
3. 添加~/.ssh/id_rsa.pub 文件内容到 git 服务器里面去
- 比如你的 git 服务是 github,那么你需要在
https://github.com/settings/keys
里面添加SSH key
,粘贴id_rsa.pub
到 下面的粘贴板,title随便命名。
如下图:
- 测试一下是否成功
$ 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/****/big12**.git
- 从 SourceTree 里面新建一个地址,这时候你发现你本地已经可以下载远程的 git 代码
5. 补充说明
-
ssh-key 是公钥私钥的非对称加密方式:
1.1公钥:用于向外发布,任何人都能获取。
1.2.私钥:要自己保存,切勿给别人 -
公钥私钥加解密的原理
2.1 客户端把自己的公钥存放到要链接的远程主机上(相当于我们把自己的 id_rsa.pub 存放到 git 服务器上)
2.2 客户端要链接远程主机的时候,远程主机会向客户的发送一条随机的字符串,客户的收到字符串之后使用自己的私钥对字符串加密然后发送到远程主机,远程主机根据自己存放的公钥对这个字符串进行解密,如果解密成功证明客户端是可信的,直接允许登录,不在要求登录。
参考链接:
[1] 配置SSH方法
踩坑,留下足迹~