如何设置git使用自己的私钥

gitlab

以连接github.com为例,新建配置文件:
~/.ssh/config
内容如下:
host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa_github
User git

文件权限设置:
chmod 600 ~/.ssh/config

现在可以用git命令进行clone了,如下:
git clone git@github.com:{ORG_NAME}/{REPO_NAME}.git
以上,{ORG_NAME} 是账号名称,{REPO_NAME}是项目名称。

特别注意,在Linux 或者 macOS 下,最好做如下操作:
chmod 400 ~/.ssh/id_rsa_github

如果git版本是 2.3.0,可以使用环境变量 GIT_SSH_COMMAND
GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_example" git clone example

如果git版本是2.10.0 ,就需要配置 core.sshCommand,命令如下:
git config core.sshCommand "ssh -i ~/.ssh/id_rsa_example -F /dev/null"
git pull
git push

没有绝对完美的方法告诉git去使用哪个私钥文件,因为它依赖ssh的认证,所以可以用ssh的方法来临时进行私钥的认证,比如:
$ ssh-agent sh -c 'ssh-add ~/.ssh/id_rsa; git fetch user@host'
在版本 Git 2.3.0+ 以上,可以这样:
GIT_SSH_COMMAND='ssh -i ~/.ssh/id_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' git clone user@host
注意上面命令是一行。

另外一个方法是用GIT_SSH 变量,下面三句命令可以放到一个shell脚本里执行。
$ echo 'ssh -i ~/.ssh/id_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $*' > ssh
$ chmod +x ssh
$ GIT_TRACE=1 GIT_SSH='./ssh' git clone user@host