我創建這個問題只是為了提醒我,因為我通常每隔幾年才設定一次 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