在linux上为git私有SSH密钥设置自定义路径

时间:2011-03-16 10:13:47

标签: git ssh private-key

我正在尝试在linux上设置git客户端。我将我的私钥上传到了机器上,我知道我应该把它放在〜/ .ssh中,但是我无法访问该文件夹。

如何告诉git在其他地方查找私钥?

5 个答案:

答案 0 :(得分:46)

您可以使用ssh config file来实现这一目标。

首先在名为~/.ssh的{​​{1}}文件夹中创建一个文件,您可以使用以下命令

config

然后,文件的内容应根据每个主机名具有密钥的位置。例如:

$ nano ~/.ssh/config

因此,当git尝试访问每个主机时,它将遵循此配置文件中基于您尝试访问的git主机的规则

答案 1 :(得分:41)

一种选择是使用ssh-agent并为ssh-add提供文件名。

例如:

$ ssh-agent /bin/bash
$ ssh-add ~/mykeys/id_rsa

答案 2 :(得分:11)

我会说将文件名放在~/.ssh/config 中,但您也可能无法访问此文件。

您可以将ssh私钥用于-i keyfile选项。

现在怎么说git哪些选项传递给ssh?

GitTips page表示创建一个包装器脚本并使用GIT_SSH环境变量指向它。

看起来您也可以使用git配置core.gitProxy,但我找不到一个好的示例,而some mailing list message表明它只适用于git:协议。

答案 3 :(得分:4)

使用ssh-agent

ssh-agent bash -c 'ssh-add /home/me/my_private_key; git clone git@bitbucket.org:uname/test-git-repo.git'

答案 4 :(得分:1)

对于我正在处理我的应用程序的项目,需要将所有git命令的shell脚本吐出到init / commit / push到外部存储库。 〜/ .ssh / config是禁止的,所以我在我的app目录中有我的公钥/私钥。我使用了vhallac的答案。这是我在shell脚本中使用我的密钥所必须做的事情:

eval `/usr/bin/ssh-agent`
ssh-add /path/to/.ssh/id_rsa

希望这有助于某人