我正在尝试在Linux上设置Git客户端。我已将我的私钥上传到该机器,我知道应该将它放在~/.ssh中,但我无法访问那个文件夹。
如何告诉Git在其他地方寻找私钥?
我正在尝试在Linux上设置Git客户端。我已将我的私钥上传到该机器,我知道应该将它放在~/.ssh中,但我无法访问那个文件夹。
如何告诉Git在其他地方寻找私钥?
您可以使用ssh配置文件来实现。
首先,在您的~/.ssh
文件夹中创建一个名为config
的文件,您可以使用以下命令:
$ nano ~/.ssh/config
然后,文件的内容应该根据每个主机名来确定密钥的位置。例如:
Host github.com
IdentityFile ~/myPublicKeyFolder/myGitHubFile
Host heroku.com
IdentityFile ~/myPublicKeyFolder/myHerokuFile
因此,当Git尝试访问每个主机时,它将根据你正在尝试到达的Git主机内部的规则遵循此配置文件中的规则。
一种方法是使用ssh-agent
并向ssh-add
提供一个文件名。
例如:
$ ssh-agent /bin/bash
$ ssh-add ~/mykeys/id_rsa
使用ssh-agent
ssh-agent bash -c 'ssh-add /home/me/my_private_key; git clone git@bitbucket.org:uname/test-git-repo.git'
我正在开发一个项目,我的应用程序需要生成一个Shell脚本,其中包含所有的Git命令以便于初始化/提交/推送到外部存储库。由于~/.ssh/config是受限制的,因此我将我的公钥/私钥放在应用程序目录中。我使用了vhallac的答案。以下是我在Shell脚本中使用我的密钥所需执行的操作:
eval `/usr/bin/ssh-agent`
ssh-add /path/to/.ssh/id_rsa