Ssh
從 shell 腳本執行 ssh-agent
我正在嘗試創建一個 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
來提供您的密鑰憑據。