我在Linux上使用帶密碼保護密鑰的ssh-agent。每次我登錄到某臺機器,我這樣做:帶密碼的ssh-agent不會產生太多進程
eval `ssh-agent` && ssh-add
此作品不夠好,但我每次登錄,這樣做的時候,我創建另一個的ssh-agent。偶爾,我會做一個killall ssh-agent
收穫它們。是否有一種簡單的方法可以在不同的會話中重複使用相同的ssh-agent進程?
我在Linux上使用帶密碼保護密鑰的ssh-agent。每次我登錄到某臺機器,我這樣做:帶密碼的ssh-agent不會產生太多進程
eval `ssh-agent` && ssh-add
此作品不夠好,但我每次登錄,這樣做的時候,我創建另一個的ssh-agent。偶爾,我會做一個killall ssh-agent
收穫它們。是否有一種簡單的方法可以在不同的會話中重複使用相同的ssh-agent進程?
看看鑰匙扣。它寫的是與你自己類似的情況。 Keychain
你對這臺機器有多少控制?一個答案是將ssh-agent作爲守護進程運行。其他選項在this web page上進行了解釋,基本上測試以查看代理是否在附近,如果不是,則運行它。
重現這裏的一個想法:
SSH_ENV="$HOME/.ssh/environment"
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn’t work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
根據您使用的shell,您可以爲登錄shell和常規的新shell設置不同的配置文件。一般而言,您希望爲登錄shell啓動ssh-agent,但不是爲每個子shell啓動。例如,在bash中,這些文件將是.bashrc
和.bash_login
。
現在大多數桌面linuxes都爲您運行ssh-agent。你只要使用ssh-add添加你的密鑰,然後通過運行
ssh -A
轉發到遠程SSH會話密鑰,你可以這樣做:
ssh-agent $SHELL
這將導致的ssh-agent退出時shell退出。他們仍然不會在會話中共享,但至少當你這樣做時他們會消失。
另請參閱這個優秀的答案:http://unix.stackexchange.com/a/90869/92102 – 2014-11-19 14:42:22