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

Posted

技术标签:

【中文标题】在 linux 上为 git 私有 SSH 密钥设置自定义路径【英文标题】:Setting a custom path for git private SSH key on linux 【发布时间】:2011-07-16 11:27:56 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

您可以使用ssh config file 来实现。

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

$ nano ~/.ssh/config

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

Host github.com
 IdentityFile ~/myPublicKeyFolder/myGitHubFile
Host heroku.com
 IdentityFile ~/myPublicKeyFolder/myHerokuFile

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

【讨论】:

【参考方案2】:

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

例如:

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

【讨论】:

它没有用。 $ ssh-agent /bin/bash $ ssh-add /home/deepakkv/gitkeys/id_rsa 添加身份:/home/deepakkv/gitkeys/id_rsa (/home/deepakkv/gitkeys/id_rsa) $ git push origin master 权限被拒绝 (publickey )。致命:远端意外挂断 $ git 使用了你的私钥,所以看起来这部分有效。服务器端可能缺少某些东西(错误的密钥,未注册的密钥等)您可能想问一个新问题。【参考方案3】:

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

您可以为ssh 提供与-i keyfile 选项一起使用的私钥。

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

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

看起来你也可以使用 git 配置 core.gitProxy,但我没有找到一个很好的例子,some mailing list message 建议它仅适用于 git: 协议。

【讨论】:

@dragon788 感谢您修复链接,但您可以链接到该页面中的正确部分(就像我现在所做的那样)。 (只是下次的提示。) 我不太确定原始文章名称和链接是否有意指向特定部分,因为链接名称是“Gittips 页面”,它现在指向的位置。我也很想添加 GIT_SSH_COMMAND,因为它现在显然是受支持的环境变量,但当时我只想修复损坏的链接。【参考方案4】:

使用 ssh 代理

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

【讨论】:

【参考方案5】:

对于我正在开发我的应用程序的项目,我需要输出一个带有所有 git 命令的 shell 脚本来初始化/提交/推送到外部存储库。 ~/.ssh/config 不受限制,所以我的应用程序目录中有我的公钥/私钥。我使用了 vhallac 的答案。这是我必须在我的 shell 脚本中执行的操作才能使用我的密钥:

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

希望这对某人有所帮助

【讨论】:

以上是关于在 linux 上为 git 私有 SSH 密钥设置自定义路径的主要内容,如果未能解决你的问题,请参考以下文章

如何使用带有密码的 SSH 密钥身份验证“去获取”私有存储库

在 Windows 10 上为 GitHub 启用多个 SSH 密钥

为啥 Visual Studio Code 想要访问我的私有 SSH 密钥?

(git bash) 推送到 bitbucket 忽略 SSH 密钥

在Google Cloud Platform上为其他帐户创建SSH密钥

使用 Amazon Linux 2 挂钩配置 Elastic Beanstalk 以通过 SSH 访问私有 git 存储库