我正试图在linux上设置一个git客户端。我将我的私钥上传到了机器上,并且我明白我应该将其放入〜/ .ssh中,但我无法访问该文件夹。在Linux上为git私有SSH密钥设置一个自定义路径
我该如何告诉git在其他地方寻找私钥?
我正试图在linux上设置一个git客户端。我将我的私钥上传到了机器上,并且我明白我应该将其放入〜/ .ssh中,但我无法访问该文件夹。在Linux上为git私有SSH密钥设置一个自定义路径
我该如何告诉git在其他地方寻找私钥?
一个选项是使用ssh-agent
并提供一个文件名到ssh-add
。
例如:
$ ssh-agent /bin/bash
$ ssh-add ~/mykeys/id_rsa
我会说在~/.ssh/config
把文件名,但你可能不会有访问此文件了。
您可以给ssh
私钥使用-i keyfile
选项。
现在怎么说git哪些选项传递给ssh?
GitTips page说创建一个包装脚本并指向GIT_SSH
环境变量。
它看起来像你也可以使用git配置core.gitProxy
,但我没有找到一个很好的例子,some mailing list message暗示它只适用于git:
协议。
@ dragon788感谢您修复链接,但您可以链接到该页面的正确部分(如我现在所做的那样)。 (下次只是一个提示。) – 2016-07-14 21:43:51
从原始文章名称中我不太确定,并且链接它是否有意指向特定部分,因为链接名称是现在指向的“Gittips页面”。我还试图添加GIT_SSH_COMMAND,因为这显然是一个支持的环境变量,但当时我只是想修复断开的链接。 – dragon788 2016-07-14 22:03:43
您可以使用ssh config file来实现。
首先创建一个文件,你的名为config
~/.ssh
文件夹内,你可以使用一些如下命令
$ nano ~/.ssh/config
然后,该文件的内容应该有你的关键的基础上每个主机名的位置。例如:
Host github.com
IdentityFile ~/myPublicKeyFolder/myGitHubFile
Host heroku.com
IdentityFile ~/myPublicKeyFolder/myHerokuFile
所以,当混帐试图访问每个主机将遵循基于Git的这个配置文件中的规则,承载您试图达到
这非常酷,因为它也适用于Windows上的git。 – 2012-09-26 13:28:38
在linux中没有工作。 – deepujain 2013-10-18 14:05:28
@deepujain哪个linux? – 2013-10-18 23:59:51
对于一个项目,我的工作我的应用程序需要使用所有的git命令来吐出一个shell脚本来初始化/提交/推送到外部存储库。 〜/ .ssh/config不受限制,所以我在我的应用程序目录中有公钥/私钥。我用vhallac的答案。这是我在我的shell脚本来完成用我的钥匙:
eval `/usr/bin/ssh-agent`
ssh-add /path/to/.ssh/id_rsa
希望这可以帮助别人
使用ssh-agent
ssh-agent bash -c 'ssh-add /home/me/my_private_key; git clone [email protected]:uname/test-git-repo.git'
它没有工作。 $ ssh-agent/bin/bash $ ssh-add/home/deepakkv/gitkeys/id_rsa 加入身份:/ home/deepakkv/gitkeys/id_rsa $ git push origin master 权限被拒绝(publickey)。 致命:远程端意外挂断 $ – deepujain 2013-10-18 14:01:02
git使用了你的私钥,所以它看起来像这部分工作。可能在服务器端缺少某些东西(错误的密钥,未注册的密钥等)。)你可能想问一个新的问题。 – vhallac 2013-10-20 05:01:31