2016-05-13 104 views
3

我有以下兩條命令,當我在我的VPS連我手動運行:如何通過SH腳本運行ssh-agent和ssh-add?

eval ssh-agent $SHELL 
ssh-add /home/duvdevan/.ssh/id_rsa 

我試着將它們添加到一個ssh.sh和使用該目錄中運行它:

./ssh.sh 

但沒有happends 。

我不是bash -savvy所以任何幫助表示讚賞。

回答

3

,而不是運行的,你需要腳本:

. ./ssh.sh 

否則,由eval命令設置環境變量不會在當前的shell可見的,因此它無法知道在哪裏找到正在運行的ssh代理。

爲了讓更多的背景,這裏是如何工作的:

  • ssh-agent命令啓動SSH代理,並打印到stdout,你需要設置連接到代理的環境變量。輸出格式化爲要執行的命令。對於測試,您可以運行此命令並查看它打印的內容
  • eval命令執行由ssh-agent打印的命令。如前所述,這些是設置環境變量的命令。這些執行後,SSH命令,你會在這個shell中運行會知道在哪裏可以找到代理
  • ssh-add命令能夠找到代理,由於先前設置環境變量
  • 這些變量的設置,直到腳本退出。當您運行./ssh.sh時,變量在該腳本的進程內設置,並且在腳本完成後可用的時間更長
  • 通過使用.獲取ssh.sh腳本,內部命令將在當前shell中執行,因此環境變量仍然設置,所以你的SSH相關的命令可以找到代理
+0

我需要在''.sh'腳本的頂部添加'#/ sh/bash'嗎? – omerowitz

+1

不,這與此無關 – janos