我正在使用 git bash。我必须使用
eval `ssh-agent.exe` ssh-add /my/ssh/location/
每次我开始一个新的 git bash 时。
有没有办法永久设置 ssh 代理?或者 Windows 是否有管理 ssh 密钥的好方法?
我是新手,请给我详细的教程,谢谢!
2013:在git bash会话中,您可以将脚本添加到~/.profile或~/.bashrc(通常设置为)~``%USERPROFILE%,以便所述会话自动启动ssh- agent. 如果文件不存在,只需创建它。
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,.bash_profile和 将“ AddKeysToAgent yes”添加到您的.ssh/config文件中(请参阅“如何根据需要ssh- agent自动添加密钥? ”)。 这样你甚至不必记住跑步ssh-add。
如果您想在第一次需要时输入密码,而不是在打开 shell 时输入,对我来说最干净的方法是:
ssh-add
.bash_profile
AddKeysToAgent yes
.ssh/config
这样你甚至不必记住跑步ssh-add。
评论中补充说(2022):
值得注意的是,为什么这个脚本在 Windows 中特别有意义,而不是(例如)@JigneshGohel在另一个答案中提到的更标准的 linuxey 脚本: 由于完全不依赖SSH_AGENT_PID,这个脚本可以在不同的 msys 和 cygwin 环境中工作。 代理可以在 msys2 中启动,并且仍然在 中使用git bash,因为SSH_AUTH_SOCK在任一环境中都可以到达该路径。 无法在另一个环境中查询来自一个环境的 PID,因此基于 PID 的方法会不断ssh-agent在每个交换机上重置/创建新进程。
值得注意的是,为什么这个脚本在 Windows 中特别有意义,而不是(例如)@JigneshGohel在另一个答案中提到的更标准的 linuxey 脚本:
由于完全不依赖SSH_AGENT_PID,这个脚本可以在不同的 msys 和 cygwin 环境中工作。 代理可以在 msys2 中启动,并且仍然在 中使用git bash,因为SSH_AUTH_SOCK在任一环境中都可以到达该路径。 无法在另一个环境中查询来自一个环境的 PID,因此基于 PID 的方法会不断ssh-agent在每个交换机上重置/创建新进程。
SSH_AGENT_PID
SSH_AUTH_SOCK
ssh-agent