使用 cygwin 在 Windows 上设置 SSH 代理

使用 cygwin 在 Windows 上设置 SSH 代理

我创建这个问题只是为了提醒自己,因为我通常每隔几年才设置一次 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
  1. pgrep 命令搜索正在运行的 SSH 代理。如果正在运行,它将输出进程 ID 并跳过另一个代理的启动。
  2. 如果找不到,则启动代理并导出环境变量
    1. eval `ssh-agent`启动代理并评估其输出,即设置环境变量SSH_AUTH_SOCKSSH_AGENT_PID
    2. ssh-add将指定的私钥添加到代理,代理将首先提示输入私钥密码。
    3. 由于上述变量仅针对已启动的 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

相关内容