我最近进行了设置openssh
,以便可以使用它git
。
在设置过程中(按照本文)我运行了以下命令:
$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/<name of key>
过了一段时间,我退出后重新登录,尝试使用时git push
出现错误。解决此错误的方法是再次运行相同的命令。
请告诉我如何
- 继续
ssh-agent
跑下去,这样我就不用开始新的了 - 记住我添加的键,这样我就不必每次都添加它们
只是为了澄清一下,我使用 zsh,所以某些 bash 功能在我的 .zshrc 中不起作用。
答案1
它的作用是什么ssh-agent
以及它如何工作?
解密密钥会ssh-agent
安全地保存在内存和会话中。没有合理且安全的方法可以在重启/重新登录期间保存解密密钥。
好的,我怎样才能实现自动化?
自动ssh-agent
启动
添加
[ -z "$SSH_AUTH_SOCK" ] && eval "$(ssh-agent -s)"
到您的~/.bashrc
或其他启动脚本(~/.zshrc
)。
自动添加密钥
首次使用时,可以自动添加密钥,方法是添加
AddKeysToAgent yes
到你的~/.ssh/config
。
欲了解更多信息,请~/.ssh/config
参阅man ssh_config
。
答案2
将其添加到~/.bashrc
这意味着当你在终端上打开另一个会话时,ssh-agent 将自动启动
if [ -z "$SSH_AUTH_SOCK" ] ; then
eval `ssh-agent -s`
fi
如果你需要将密钥添加到代理,还请添加此
if [ -z "$SSH_AUTH_SOCK" ] ; then
eval `ssh-agent -s`
ssh-add ~/.ssh/<your private ssh key>
fi