ssh-agent, bash-it plugin
ssh key를 이용해서 인증 할때 매번 key 암호를 입력하는 것이 아니라 메모리에 올려놓고 계속 사용할 수 있다.
ssh-agent를 사용하는 방법은 이미 잘되 있는 문서가 많아서 다시 거론하지 않는다.
ssh-agent
다음과 같이 코드를 작성한다. 기본적으로 ssh-agent는 8 hours(28800 sec)안에 timeout 된다.
$SSH_AGENT_TIMEOUT를 등록해서 값을 바꿀 수 있다:
function get_ssh_agent_timeout(){
#28800, 8 hours. then go home
local my_timeout=28800
[ "$SSH_AGENT_TIMEOUT" != "" ] && my_timeout="$SSH_AGENT_TIMEOUT"
echo $my_timeout
}
function bind_ssh_agent(){
local agent_pid=`ps -U $USER | grep ssh-agent | grep -v grep | awk '{print $1}' | xargs`
if [ "$agent_pid" = "" ]; then
ssh-agent -t $(get_ssh_agent_timeout) > ~/.ssh/ssh_agent_rc
. ~/.ssh/ssh_agent_rc
else
. ~/.ssh/ssh_agent_rc
fi;
}
function ssh_add_to_ssh_agent(){
local id_key_file=$1
local added=`ssh-add -l | grep $id_key_file`
[ "$added" = "" ] && ssh-add -t $(get_ssh_agent_timeout)
}
MY_KEY_FILE=~/.ssh/id_rsa
if [ "$MY_KEY_FILE" != "" ]; then
bind_ssh_agent
ssh_add_to_ssh_agent $MY_KEY_FILE
fi;
이 파일을 ${BASH}/plugins/available/ssh_agent.plugin.bash에 추가하고 ${BASH}/plugins/enabled/ssh_agent.plugin.bash에 링크를 걸면 동작한다.
update
이 방법보다 [keychain][]을 사용하는 방법이 더 좋다.
[keychain]: