背景
当有多个git账号时,例如公司用一个gitlab账号进行内部工作开发,自己还有一个gitee做一些个人开发。 产生了推送到不同网站的需求。 网上已有解决方案,但实际操作时扔遇到一些问题。 较为现依据自身情况做个梳理以备用.
在安装git时直接配置了全局账号为公司账号。 通过IDE配置连接仓库,并没有本地生成ssh-key,.ssh文件夹直接为空。 不过并不影响。
操作步骤
- 生成私人用的gitee ssh-key 随便在哪个地方右击鼠标,调出git bash,命令行输入
ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/gitee_id_rsa
三次回车即可得到一个私钥。第二次第三次是设置密码的,看心情,不想设置就直接回车。 邮箱为私人邮箱, gittee_id_rsa
为生成的ssh-key文件名。
- 进入~/.ssh目录,git bash->touch config创建一个config文件如图。如果已有该文件打开进行修改。 在文件内加入以下:
#giteeHost gitee.com HostName gitee.comPreferredAuthentications publickeyIdentityFile ~/.ssh/gitee_id_rsa复制代码
host
可以随便起名,
hostName
必须是我要连接的网站域名,例如我要连接码云的就填 gitee.com ,我要连接GitHub就填 github.com IdentityFile
为指定私钥的路径.
- 在网站仓库里添加ssh-key。
熟门熟路了。 查看刚才生成的私钥 git bash
-> cat ~/.ssh/gitee_id_rsa.pub
,获取到刚才生成的public key。 复制生成后的 ssh key,通过项目主页 「管理」->「部署公钥管理」->「添加部署公钥」 ,添加生成的 public key 添加到项目中。
- 加完成后git bash 输入
ssh -T git@gitee.com
测试是否连通。 首次使用需要确认并添加主机到本机SSH可信列表。若返回Bad packet length 1888678581. ssh_dispatch_run_fatal: Connection to 120.55.2
内容,则证明添加成功。
可能遇到的问题
输入ssh -T git@gitee.com
之后,得到这样的提示:
The authenticity of host 'gitee.com (120.55.226.24)' can't be established.ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.Are you sure you want to continue connecting (yes/no)? yes复制代码
输入yes
,得到:
Bad packet length 1888678581. ssh_dispatch_run_fatal: Connection to 120.55.2
Permission denied (publickey)
解决
默认SSH只会读取id_rsa,所以为了让SSH识别新的私钥,需要将其添加到SSH agent。 使用命令:ssh-add ~/.ssh/gitee_id_rsa
如果报错:Could not open a connection to your authentication agent.无法连接到ssh agent 可执行ssh-agent bash
命令后再执行ssh-add
ssh -T git@gitee.com
看到hi xxxx~ 就成功了~ 参考文章: