背景
最近项目需要推送到 gitee 两个账号下的不同仓库,本篇文章记录本次学习.
git ssh
架设 Git 服务器时常用 SSH 协议作为传输协议。 因为大多数环境下服务器已经支持通过 SSH 访问 —— 即使没有也很容易架设。 SSH 协议也是一个验证授权的网络协议;并且,因为其普遍性,架设和使用都很容易。
一般 ssh 协议地址格式 : user@server:path/to/repo.git.
生成 ssh 公钥
示例 :
ssh-keygen -t rsa -C "example@example.com"
首先 ssh-keygen 会确认密钥的存储位置(默认是 .ssh/id_rsa),然后它会要求你输入两次密钥口令。
ssh-agent
如果在上一步选择设置了密码(一般不设置),可以使用ssh-agent来避免每次commit都需输入密码;
ssh 官网文档 ssh-agent介绍
ssh-agent 命令介绍
如果ssh-agent未在登录时自动启动,则可以使用以下命令手动启动
示例 :
eval `ssh-agent`
将SSH密钥添加到代理
示例 :
ssh-add ~/.ssh/id_rssa_boot
命令将列出代理当前可访问的私钥
示例 :
ssh-add -l
本地 ~/.ssh/config 文件配置
因为要推送到gitee两个账号下的不同仓库,因为不同账号不能使用同一份公钥文件,所以需要生成两对秘钥文件,并在本地配置好 config 文件,本地 ~/.ssh/ 文件夹下结构如下:
配置 config 文件
git 默认使用 id_rsa 公钥文件,无特殊配置则会使用此文件.config 文件配置项可以在linux下使用 man ssh_config 命令查看 配置选项.
示例 :
Host boot //远程服务本地设置的别名
HostName gitee.com //实际的远程主机地址
User git //实际的远程主机的用户名 默认使用 git 就可以
PreferredAuthentications publickey //授权方式 选择 publickey
IdentityFile ~/.ssh/id_rssa_boot //指定授权使用的秘钥文件,
测试结果:
ssh -T boot //此处 boot 即为配置文件中的 Host 项配置
本次使用的配置文件比较简单,需要其他配置项可查看 ssh 官方文档-config 配置选项 (链接)
配置远程仓库的 公钥
把生成的公钥上传至对应的 gitee 账户
修改本地仓库项目中的对应的远程仓库地址
修改本地仓库对应的远程地址:
git remote set-url origin boot:[user/project.git] //此处 boot 即为配置文件中的 Host 项配置
结束
大功告成!