Pyon's Diary
成る可くJIS X 0213:2004對應MSフォント(5.0)、IPAフォント(003.02)で御覽下さい
2007-02-27 舊 平成拾玖年睦月拾日 (火・晴) [長年日記]
GNU Screen を使ふ。(其乃陸)
(其乃伍へ) GNU Screen (4.0.2) をデタッチしてから PuTTY を落とし、再度起動して GNU Screen (4.0.2) にアタッチすると環境變數 SSH_AUTH_SOCK を一々手で修正し無いとエージェント・フォワードが利かない。
此が面倒臭くて「何とかしてよ、ド○え○〜○。」と、し○めさんの處に云つたら以下の頁を教へて呉れた。
早速 $HOME/.tmp と云ふディレクトリを掘り、$HOME/.bash_profie に次のコードを追記した。
agent="$HOME/.tmp/ssh-agent-$USER"
if [ -S "$SSH_AUTH_SOCK" ]; then
case $SSH_AUTH_SOCK in
/tmp/*/agent.[0-9]*)
ln -snf "$SSH_AUTH_SOCK" $agent && export SSH_AUTH_SOCK=$agent
esac
elif [ -S $agent ]; then
export SSH_AUTH_SOCK=$agent
else
echo "no ssh-agent"
fi
此で新しくログインして GNU Screen (4.0.2) を起動してデタッチ、ログアウト。再度ログインし直して GNU Screen (4.0.2) をアタッチして別のホストにログインすると、きちんとエージェント・フォワードが行はれた。素晴らしい。
自分が日常的に入るホストに全て仕込んだ。
追記: 壹。
其乃後で記事に着いてゐたコメントを元に以下の樣に變更した。
SCKTDIR=${HOME}/.sockets
AGENT=${SCKTDIR}/ssh-agent-${USER}
test -d "${SCKTDIR}" || mkdir -p ${SCKTDIR}
if [ -S "${SSH_AUTH_SOCK}" -a ! -L "${SSH_AUTH_SOCK}" ]; then
ln -snf ${SSH_AUTH_SOCK} ${AGENT} && export SSH_AUTH_SOCK=${AGENT}
elif [ -S "${AGENT}" ]; then
export SSH_AUTH_SOCK=${AGENT}
else
echo "no ssh-agent"
fi
此で sshd が作成するソケットが /tmp に無くても大丈夫だし、ソケットの SymLink を格納するディレクトリが豫め存在し無くても大丈夫。
追記: 貳。
抑々(そもゝゝ) $HOME の直下に SymLink を張れば、ディレクトリを掘らずに濟むのでは無いか。で、試して見て結局以下の樣にした。
AGENT=${HOME}/.ssh-agent-${USER}
if [ -S "${SSH_AUTH_SOCK}" -a ! -L "${SSH_AUTH_SOCK}" ]; then
ln -snf ${SSH_AUTH_SOCK} ${AGENT} && export SSH_AUTH_SOCK=${AGENT}
elif [ -S "${AGENT}" ]; then
export SSH_AUTH_SOCK=${AGENT}
else
echo "no ssh-agent"
fi
此で GNU Bash がログイン・シェルに成つてゐるホストであれば可成り倖せに生活が出來る樣に成つた。後はコメントにも書いて在る樣な二重ログインの問題か。
[ツッコミを入れる]
[]