我正在尝试在linux上设置git客户端。我将我的私钥上传到了机器上,我知道我应该把它放在〜/ .ssh中,但是我无法访问该文件夹。
如何告诉git在其他地方查找私钥?
答案 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
希望这有助于某人