我必须重复输入以下终端命令才能推送到远程 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
应该仔细检查该密钥是否被接受并且可以建立连接。