[git]使用SSH协议推拉代码
2020-7-15 21:32:00 by loki
文章目录
目的
使用http协议推拉代码,每次都需要输入账号密码,安全性低,还麻烦。所以用SSH协议来推拉代码,更安全,更快速。
方案
- 在本地和gitee上准备好仓库
- 生成密钥(用git bash,或putty key Generator)
- 添加私钥到agent(git bash的SSH-keygen命令用的是config文件,tortoisegit用的是putty agent)
- 添加公钥到gitee(部署公钥用于生产,账号公钥用于开发)
- 使用git管理代码
SSH key是什么
SSH密钥,是用于绑定使用者的身份的,也就是1人1密钥(公钥+私钥)
在操作私有仓库时,密钥才有效。公共仓库本身就是开放操作的,不需要账号或者密钥。
为什么要添加密钥
使用SSH协议,需要配置密钥,否则会报错:
git@gitee.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
生成key的方法
可以用ssh-keygen
命令或者TortoisGit的puttyGen
插件生成key,但生成的key只能为其自己使用。
ssh-keygen
生成的key默认名称为id_rsa
,没有后缀
puttyGen
生成的key名称样式为*.ppk
如果即要用bash,又要用tortoisegit,那么就要添加两个key。
ssh-keygen制作SSH key
生成key
进入cmd,使用以下命令生成ssh key:
ssh-keygen -t rsa -C "<你的邮箱>"
接下来需要输入3个参数:私钥文件存储路径,密码,确认密码
可以直接按3次回车,即全都以默认确定,默认私钥文件存储路径为~/.ssh/id_rsa
,密码默认为空。
公钥id_rsa_pub
也会生成在同一目录下。
临时添加ssh私钥到agent
若生成key时不是以默认路径保存,则需要再添加到ssh-agent
注意添加的是私钥的文件名称
## 提高权限,否则不能add
ssh-agent bash
ssh-add "/c/users/<username>/.ssh/<filename of private key>"
如果又生成了key文件,则要删除原来的密钥路径
注意,上面的方法是临时性的,重新打开bash后需要重新配置。
配置多个ssh私钥
要长期保存,需要建立一个配置文件~/.ssh/config
,这点TortoistGit也是一样的(TortoistGit的配置文件路径为.git/tortoisegit.data
)。
config文件内容如下:
## gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/<私钥文件名称>
添加公钥到gitee
输入以下命令查看public key,
cat ~/.ssh/id_rsa.pub
将公钥复制到输入框中
注意,要使用的是公钥id_rsa.pub
,而不是id_rsa
。
验证SSH-key
输入以下命令
ssh -T git@gitee.com
若返回 Hi XXX! You've successfully authenticated, but Gitee.com does not provide shell access.
内容,则添加成功。
完成
添加公钥后,就可以在git bash中通过ssh推拉代码了。
puttyGen制作SSH key
说明
在TortoiseGit的setting中,若URL为SSH类型,则要指定key的路径。
若用户没有指定key的路径,TortoiseGit会默认从key列表加载key。
打开任务栏右下角的putty agent,可查看自动加载列表
生成key
生成密钥:单击generate
,在空白区域移动鼠标,
保存私钥:单击save private key
,若已有public key,可以通过“load”加载。
添加私钥到agent
打开putty agent,单击add key
选择刚才保存的private key
添加公钥到gitee
加载私钥:在putty中单击load
,选择私钥文件
复制公钥:加载私钥文件后,复制公钥
在gitee中添加公钥:输入公钥名称,并将复制的公钥粘贴到公钥输入框中。
完成
添加公钥后,就可以在git bash中通过ssh推拉代码了。
Tortoise