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所以任何幫助表示讚賞。
我有以下兩條命令,當我在我的VPS連我手動運行:如何通過SH腳本運行ssh-agent和ssh-add?
eval ssh-agent $SHELL
ssh-add /home/duvdevan/.ssh/id_rsa
我試着將它們添加到一個ssh.sh
和使用該目錄中運行它:
./ssh.sh
但沒有happends 。
我不是bash
-savvy所以任何幫助表示讚賞。
,而不是運行的,你需要源腳本:
. ./ssh.sh
否則,由eval
命令設置環境變量不會在當前的shell可見的,因此它無法知道在哪裏找到正在運行的ssh代理。
爲了讓更多的背景,這裏是如何工作的:
ssh-agent
命令啓動SSH代理,並打印到stdout,你需要設置連接到代理的環境變量。輸出格式化爲要執行的命令。對於測試,您可以運行此命令並查看它打印的內容eval
命令執行由ssh-agent
打印的命令。如前所述,這些是設置環境變量的命令。這些執行後,SSH命令,你會在這個shell中運行會知道在哪裏可以找到代理ssh-add
命令能夠找到代理,由於先前設置環境變量./ssh.sh
時,變量在該腳本的進程內設置,並且在腳本完成後可用的時間更長.
獲取ssh.sh
腳本,內部命令將在當前shell中執行,因此環境變量仍然設置,所以你的SSH相關的命令可以找到代理
我需要在''.sh'腳本的頂部添加'#/ sh/bash'嗎? – omerowitz
不,這與此無關 – janos