我创建这个问题只是为了提醒自己,因为我通常每隔几年才设置一次 SSH 代理。
那么,假设使用类似 Linux 的 shell 环境,如何在 Windows 下设置 SSH 代理?
答案1
我当前的设置:
- Windows 10 专业版
- 也应该适用于提供 setx 命令的旧 Windows 版本(Win7)
- 巴本壳(zsh)
- 基于 cygwin
我做了什么:
我决定将启动命令添加到 .zshrc 文件中,以便每次启动新 shell 时都会运行它。因此,命令如下:
# startup of the ssh-agent
AGENT_PID=$(pgrep -x ssh-agent)
if [ $? -ne 0 ]; then
echo "~/.zshrc: Starting SSH Agent!"
eval `ssh-agent` && ssh-add ~/.ssh/id_rsa
setx SSH_AUTH_SOCK $SSH_AUTH_SOCK
setx SSH_AGENT_PID $SSH_AGENT_PID
echo "~/.zshrc: SSH Agent running (PID: $SSH_AGENT_PID)"
else
echo "~/.zshrc: SSH Agent already running (PID: $AGENT_PID)"
fi
- pgrep 命令搜索正在运行的 SSH 代理。如果正在运行,它将输出进程 ID 并跳过另一个代理的启动。
- 如果找不到,则启动代理并导出环境变量
eval `ssh-agent`
启动代理并评估其输出,即设置环境变量SSH_AUTH_SOCK
并SSH_AGENT_PID
ssh-add
将指定的私钥添加到代理,代理将首先提示输入私钥密码。- 由于上述变量仅针对已启动的 shell 进程进行设置,因此需要全局设置这些变量,以便用户能够使用其他 shell 以及未从 shell 启动的其他工具。这可以使用 Windows 中的 setx 命令完成。我只是根据从代理中检索到的变量来设置变量。
之后,您就一切就绪,并且代理在您首次启动 shell 后即可运行和使用。为确保代理随 Windows 启动而启动,您还可以将 shell 启动器添加到 Windows 自动启动中。
答案2
对我来说,有效的方法是遵循 Oracle cygwin ssh 设置 [1]。从那里开始,您将对安装 Cygwin 和配置 SSH 感兴趣。我在工作中使用此设置,让所有类型的 QE 连接到机器并在那里执行测试。您可以执行大多数 Linux 命令以及使用 Windows 命令,这非常酷。
基本上是 Windows 中的 Linux shell :-)
干杯,
马丁
[1]https://docs.oracle.com/cd/E24628_01/install.121/e22624/preinstall_req_cygwin_ssh.htm#EMBSC150