将密钥添加到 ssh-agent

将密钥添加到 ssh-agent

我有三个 SSH 密钥对,希望在每次启动 shell 时将其添加到 SSH 代理中。重新启动后,我总是必须使用 手动再次添加它们ssh-add <path_to_private_key>

我怎样才能做到这一点?

答案1

这取决于。

如果您通过 SSH 登录,则可以通过 选项使用 SSH 代理转发-Assh或者,您可以在 中设置一个选项~/.ssh/config)。这样做将允许您将 SSH 密钥从服务器复制到本地运行的ssh-agent.

如果您通过 X 会话登录,您应该有一个ssh-agent由您的发行版设置的单一中央运行。如果没有,请确保您的~/.xsession(或用于启动 X 会话的任何内容)包含如下内容:

ssh-agent awesome

(假设您像我一样并且喜欢很棒的窗口管理器)。

如果一切都失败了,你可以使用你的~/.bash_profile.在那里,沿着以下几行添加一些内容(靠近顶部该文件的):

if [ -z "$SSH_AGENT_PID" ]
then
    exec ssh-agent bash
fi
ssh-add ...

这会检查您是否已经有一个代理正在运行;如果没有,它会重新启动一个,然后启动一个 shell。如果您这样做,它会将您的密钥添加到其中。

(还有另一种选择,您可以在eval ssh-agent不传递运行命令的情况下运行。不要这样做;它不太安全)

答案2

启动代理后,将设置SSH_AUTH_SOCK和 的命令保存SSH_AGENT_PID到文件中。然后执行这些命令,而不是再次启动代理。这将为您的所有 shell 留下一个共享代理。在您的.profile或文件中构建此功能.bash_profile将使这变得更容易。

如果您在 X-Windows 环境中工作,则只需在 X-Windows 初始化过程中启动代理即可。然后,您的 shell 应该继承现有的代理设置。

使用此解决方案时,我添加了超时相对较短的键。可以在启动 ssh-agent 时使用该-t选项设置默认值。

相关内容