git 指定提交密钥
背景:
多人协同办公时, 在集群或者测试机上会出现多个ssh 密钥, 这时我们使用ssh key 执行pull等操作就会出现问题, 解决这个问题的办法就是:提交时指定ssh密钥路径
以下操作前提: 生成ssh key
第一种、指定ssh 密钥实现
一、 使用 ssh config 映射文件
在 ~/.ssh/
文件下创建 config
文件,内容如下:
# gitlab user Host xxxxx # 别名 HostName gitlab.com # 仓库地址 User git # 用户, 默认git IdentityFile ~/.ssh/id_rsa # 你的私钥绝对路径
文件内容格式:
标签 | 描述 |
---|---|
Host | 仓库主机,对应具体项目下的.git/config 中的url 中的主机名 |
HostName | 仓库主机名称 |
User | 用户名,对于 git 来说就是固定值 git |
IdentityFile | ssh 私钥 路径 |
如果是通过http pull 的先更改配置.git/config:
[remote "origin"] url = git@xxxxx:brandon/project-c.git
验证:
ssh -T xxxxx
第二种:
找到git 的config文件 /etc/ssh/ssh_config 并编辑
Host github.com User git Hostname ssh.github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa
- ~/.ssh/id_rsa 你的密钥路径
- ssh.github.com 代码仓库地址如:http://gitlab.alibaba.com/virtxxx/xxx.git 支取 gitlab.alibaba.com
- github.com 自定义名称,用来代替仓库地址
- user 默认git
修改完成, 验证:
ssh -Tvv github.com
你应该看到:
恭喜你成功了。
接着修改项目中.git/config 下的仓库地址为
# 原来
http://gitlab.alibaba.com/virtxxx/xxx.git
# 修改后
http://ssh.github.com/virtxxx/xxx.git
ssh 一样。
常见异常:
1、权限问题如图:
解决:
- 修改.ssh 文件夹权限为 700: chmod 777 ~./.ssh
- 修改id_rsa 文件权限为 600: chmod 600 id_rsa
上图还有一个问题, 就是再ssh_config 中, 指定密钥文件的地方写成了.ssh 文件夹, 改正即可。