小编典典

在 Windows 上启动 Git Bash 时运行 SSH 代理

all

我正在使用 git bash。我必须使用

eval `ssh-agent.exe`
ssh-add /my/ssh/location/

每次我开始一个新的 git bash 时。

有没有办法永久设置 ssh 代理?或者 Windows 是否有管理 ssh 密钥的好方法?

我是新手,请给我详细的教程,谢谢!


阅读 77

收藏
2022-07-14

共1个答案

小编典典

2013:在git bash会话中,您可以将脚本添加到~/.profile~/.bashrc通常设置为~``%USERPROFILE%,以便所述会话自动启动ssh- agent.
如果文件不存在,只需创建它。

这就是 GitHub 在“使用 SSH 密钥密码短语”中描述的内容。

该文章的“在 Git for Windows 上自动启动 ssh-
agent

”部分有一个健壮的脚本,用于检查代理是否正在运行。
下面只是一个片段,完整的解决方案请参见 GitHub 文章。

# This is just a snippet. See the article above.
if ! agent_is_running; then
    agent_start
    ssh-add
elif ! agent_has_keys; then
    ssh-add
fi

其他资源:

Getting ssh-agent to work with git run from windows command
shell
”有一个类似的脚本,但我主要参考上面的 GitHub
文章,它更健壮且最新。


在评论中添加(2018):

如果您想在第一次需要时输入密码,而不是在打开 shell 时输入,对我来说最干净的方法是:

这样你甚至不必记住跑步ssh-add


评论中补充说(2022):

值得注意的是,为什么这个脚本在 Windows
中特别有意义,而不是(例如)@JigneshGohel在另一个答案中提到的更标准的 linuxey
脚本:

由于完全不依赖SSH_AGENT_PID,这个脚本可以在不同的 msys 和 cygwin 环境中工作。
代理可以在 msys2 中启动,并且仍然在 中使用git bash,因为SSH_AUTH_SOCK在任一环境中都可以到达该路径。
无法在另一个环境中查询来自一个环境的 PID,因此基于 PID 的方法会不断ssh-agent在每个交换机上重置/创建新进程。

2022-07-14