Ssh

從 shell 腳本執行 ssh-agent

  • January 4, 2022

我正在嘗試創建一個 shell 腳本,其中包括啟動 ssh-agent 並向代理添加私鑰。例子:

#!/bin/bash
# ...
ssh-agent $SHELL
ssh-add /path/to/key
# ...

問題在於 ssh-agent 顯然啟動了 $SHELL 的另一個實例(在我的例子中是 bash),從腳本的角度來看,它執行了所有內容,並且 ssh-add 以及它下面的任何內容都不會執行。

如何從我的 shell 腳本執行 ssh-agent 並讓它在命令列表中向下移動?

ssh-agent 應該開始一個會話,當它完成時,使用者會話就結束了。因此 ssh-agent 之後的任何命令都可能在註銷後執行。

你想要的是一個session-script包含你的會話命令,如下所示:

#!/bin/bash
ssh-add /path/to/key
bash -i # or other session starter

然後開始ssh-agent session-script

將以下內容放在腳本的頂部:

eval `ssh-agent`

您的腳本應如下所示:

#!/bin/bash
eval `ssh-agent`
ssh-add /path/to/key
...
...

解釋

周圍的反引號ssh-agent收集其輸出。eval收集該輸出,將其連接成單個命令,然後執行該命令。然後您可以使用它ssh-add來提供您的密鑰憑據。

引用自:https://serverfault.com/questions/547923