我需要在每次启动时重新运行 eval(ssh-agent) 和 ssh-add
Posted
技术标签:
【中文标题】我需要在每次启动时重新运行 eval(ssh-agent) 和 ssh-add【英文标题】:I need to re-run eval(ssh-agent) and ssh-add on every boot 【发布时间】:2021-11-27 22:47:18 【问题描述】:我想知道是否可以得到一些帮助。我最近重新安装了我的操作系统,我遇到了一个我以前从未遇到过的奇怪问题。我在关注Github steps to add ssh agent
基本上每次登录都需要运行
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_personal
当我重新启动计算机时。
当我尝试运行 git clone X
时,我得到了
Cloning into 'X'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
但是在我运行上面的 2 个命令之后,我 cna 克隆就好了
注意:Gitlab 也存在问题。对不起,我应该是明确的
【问题讨论】:
查看***.com/q/18880024/7976758的所有答案在***.com/search?q=%5Bssh-agent%5D+every+login中找到 我个人在ssh-agent
模式下使用gpg-agent
。它将密钥永久存储在一个文件中,并允许配置它重新询问密码的频率;我的每 12 小时询问一次。我在 XWin 之前启动 gpg-agent
,因此它可用于我的 X 会话中的所有终端和程序。
MacOS 在您登录时通过launchd 启动一个ssh-agent,然后再启动任何窗口,这样窗口就预先设置了ssh 环境变量。您可以获得可以做同样事情的 Linux 软件,但我从未使用过它。我使用的东西更像@phd 描述的方法。
【参考方案1】:
听起来你在 Linux 上运行,你的登录可能是“bash”。
如果是这样,我会考虑将这两行添加到您的~/.bashrc 登录文件的底部:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_personal
你也可以考虑试试这个:
How to Set ssh-agent to Run Automatically【讨论】:
是的,我使用的是 Linux,但我在zsh
上运行。我可能可以将这两行放在.zshrc
的底部(我会的),但我也不确定为什么会发生这种情况......我已经使用 linux 很长一段时间了,我已经没见过这样的
这与 Linux 没有太大关系,但与 GitHub 及其身份验证与正在运行的 ssh-agent 交互的方式有关。
对不起,我应该更清楚地说这个,但我在 gitlab 上遇到了同样的问题:/
对于 bash,由于您只想在初始登录时执行此操作,您可以考虑使用 .bash_profile
。我不确定 zsh 设置。另一个常见的技巧是首先检查是否有现成的代理可用,如果没有,则启动一个,但它有一些潜在的竞争,所以我自己不喜欢这个。
@IanQ: 1) 如果您没有注意到我的更新,请考虑:How to Set ssh-agent to Run Automatically。 2) phd 提出了一个有趣的建议,即使用 gpg-agent(GNUPrivacy Guard 的一部分)作为 ssh-agent 的替代品。您可以在这里了解更多信息:gnupg.org,3) 您可能已经知道,zsh 用户初始化文件是~.zshrc。 '希望有帮助;请发回你学到的东西!【参考方案2】:
添加我自己的答案:
我认为问题在于,当我制作第一个键时,我更改了默认名称。即我从
~/.ssh/id_id_edX -> ~/.ssh/id_personal
删除密钥并重新生成东西后,一切都解决了。为什么?身份证
【讨论】:
以上是关于我需要在每次启动时重新运行 eval(ssh-agent) 和 ssh-add的主要内容,如果未能解决你的问题,请参考以下文章