2010-12-05

ssh-agent を起動するスクリプト

作ってみた。


#!/bin/bash
# ssh-agent を起動するスクリプト 5 Dec 2010 Masaru Yokoi
#
# 動作概要:
# - 環境変数 SSH_AUTH_SOCK が設定され、このソケットが利用出来る場合には、
# そのまま利用する
# - 下記の場合には、SSH_AUTH_SOCKを ~/.ssh-auth-sock に設定して ssh-agent
# を起動する。
# - SSH_AUTH_SOCK が設定されていない場合
# - SSH_AUTH_SOCK は設定されているが利用できない場合。
# - ソケットファイルの名前が固定になっているので、これが有るか無いかで判定
#
# 使い方:
# - このスクリプトを ~/.ssh/start-agent.sh あたりに置きましょう
# - ~/.bashrc に下記のような内容を書きましょう。
# . ~/.ssh/start-agent.sh
#
function start_ssh_agent_check_authsock() {
s="$1"
[ -n "$s" -a -S "$s" -a -O "$s" ] && return 0 || return 1
}
function start_ssh_agent() {
new_SSH_AUTH_SOCK=~/.ssh-auth-sock
if start_ssh_agent_check_authsock "$SSH_AUTH_SOCK" ; then
return 0
fi
if start_ssh_agent_check_authsock "$new_SSH_AUTH_SOCK" ; then
SSH_AUTH_SOCK="$new_SSH_AUTH_SOCK"
export SSH_AUTH_SOCK
return 0
fi
ssh-agent -a "$new_SSH_AUTH_SOCK" || return 1
if start_ssh_agent_check_authsock "$new_SSH_AUTH_SOCK" ; then
SSH_AUTH_SOCK="$new_SSH_AUTH_SOCK"
export SSH_AUTH_SOCK
return 0
fi
}
start_ssh_agent

SSH Forward Agent を利用している環境で screen を立ち上げ、 screen を detach して、別のSSHセッションで screen reattach すると SSH Agent が利用できなくなるので、こんなものを作った。


またもうちょい直す予定

0 件のコメント:

コメントを投稿