请问如何指定git使用的私钥文件?

我想请问一下,使用git push上传本地文件到远程github时,git是如何找到对应的私钥文件来完成git push的呢?

我主要是想到在使用ssh进行登录时,需要指定私钥文件的地址,为什么git push的时候不需要呢?

我在本地生成了一副密钥对,将公钥添加到github中,私钥放在~/.ssh/下面,为什么就能git push成功了呢?git是如何找到相应的私钥文件的呢?git是直接在~/.ssh/中去找私钥吗?还是在哪里的config中有配置私钥的路径呢?

谢谢

阅读 7.6k
2 个回答

私钥不是 git 用的,而是 ssh 用的。所以问题应该是,如何指定 ssh 用的私钥文件。

ssh 的私钥文件是默认放在 ~/.ssh 里的,不同的私钥有不同的文件名。详见 ssh 文档

私钥文件也可以通过 ~/.ssh/config 来指定。

fefe 说的没错,
我补充一下 ~/.ssh/config 的用法

比如我的 ~/.ssh/config 文件如下:

Host github
  HostName github.com
  User git
  IdentityFile /root/.ssh/gihub
/root/.ssh/gihub 是用 ssh-keygen 命令生成的另一个私钥

当我执行 git clone git@github.com:xxx/xxx 用的是默认私钥
当我执行 git clone git@github:xxx/xxx 用的就是 /root/.ssh/gihub 这个私钥了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题