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

Posted

技术标签:

【中文标题】如何使用带有密码的 SSH 密钥身份验证“去获取”私有存储库【英文标题】:How to `go get` private repos using SSH key auth with password 【发布时间】:2021-12-09 09:39:21 【问题描述】:

我通常在我的 ssh 密钥中设置一个密码,这样万一它被泄露,我可能有一些时间来轮换到一个新的。

但是,在使用 go 模块时,我注意到在执行 go get 并使用带密码的密钥时,我收到以下错误

git@github.com:权限被拒绝(公钥)。

在解决 Go 中的依赖项时,是否有任何方法提示输入此密码?

现在,我删除了密码:(

【问题讨论】:

通常你会使用 ssh 代理,这不是一个选项吗? @JimB 太棒了。像魅力一样工作。绝对是一种选择 【参考方案1】:

使用代理。在 Linux 或 Macos 上,该过程是

   ssh-agent bash

这第一步使用 ssh-agent 启动一个 shell

   ssh-add ~/.ssh/id_rsa

第二步给代理添加key,~/.ssh/id_rsa是key的路径。在这一步之后,它会询问一次密码

完成这些操作后,新 shell 中的任何命令都将使用通过 ssh-add 加载的密钥

【讨论】:

【参考方案2】:

您也可以尝试通过禁用批处理模式来更改 go get 调用 ssh 的方式:

env GIT_SSH_COMMAND="ssh -o ControlMaster=no -o BatchMode=no" go get github.com/<YOUR_REPO_HERE>

【讨论】:

以上是关于如何使用带有密码的 SSH 密钥身份验证“去获取”私有存储库的主要内容,如果未能解决你的问题,请参考以下文章

使用密码短语(如 SSH 密钥)存储 Github / Gitea 身份验证令牌

带有 openssh 密钥的 TortoiseGit 未使用 ssh-agent 进行身份验证

仅针对特定用户的 SSH 身份验证绕过密码身份验证

无法使用密钥身份验证 ssh 到服务器

是否可以使用用于登录的 ssh 密钥在第三方应用程序中对用户进行身份验证?

没有密码但密钥身份验证安全的Mysql服务器?