使用 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

相關內容