如何避免每次推送到 github 存储库时都使用“ssh-add ~/.ssh/id_rsa”?

如何避免每次推送到 github 存储库时都使用“ssh-add ~/.ssh/id_rsa”?

我必须重复输入以下终端命令才能推送到远程 github 存储库。如果我推送到 github,然后在接下来的几个小时内再编写一些代码,然后再次推送,我必须输入命令:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

否则我会收到以下错误消息:

>> git推送原点大师

Sign_and_send_pubkey:签名失败:代理拒绝操作权限被拒绝(公钥)。致命:无法从远程存储库读取。

请确保您拥有正确的访问权限并且存储库存在。

我必须做什么才能不再需要继续使用 ssh-add 才能推送?我本以为使用 ssh-add 一次就能解决问题,但事实似乎并非如此!

答案1

以下是基于另一个回答

为了即使在重新启动后也不必重新填写密码,请将以下内容添加到您的 ssh 配置文件(通常位于~/.ssh/config,或Windows位于%UserProfile%/.ssh/config

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa

答案2

将您的 ssh 密钥文件添加id_rsa到目录 ~/.ssh/

使用复制或移动将其放置在那里,而不是 ssh-add

这是私人的以以下内容开头的文件:

-----BEGIN RSA PRIVATE KEY-----

如果您没有私钥文件,可能问题是您实际上需要生成它们

  • 在本地计算机上打开终端并输入以下内容:...ssh-keygen -t rsa -C "[email protected]"
  • 只需按下即可接受默认位置和文件名。 ...出现提示时输入并重新输入密码。 ...
  • 你完成了!

这些步骤来自https://confluence.atlassian.com/bitbucketserver/creating-ssh-keys-776639788.html

答案3

在尝试了更改文件/目录权限和 ssh-add 等建议后,gitlab 文档帮助我解决了类似的问题。

您尝试过 ed25519 而不是 rsa 吗?

检查您所连接的服务器是否支持您的公钥使用的加密类型非常重要。例如,我尝试使用的 gitlab 服务器不支持通常存储在中的密钥类型~/.ssh/id_dsa.pub

相反,它需要 ed25519 或 rsa 加密密钥。对于 ed25519,要生成新密钥,可以使用:$ssh-keygen -t ed25519 -C "[email protected]"

然后,$ssh -T user@server应该仔细检查该密钥是否被接受并且可以建立连接。

相关内容