■
[Tools] Sticky ssh tunnel その2
先日(id:hcr:20050707),sshセッションを張りっぱなしにするスクリプトを書いてみたのですが,やっぱり空のパスフレーズは強度的に不安なので,ssh-agent対応してみました.(「ssh-agent で快適 ssh 生活 (.ja)」のスクリプトを参考にしています.)
スクリプトを起動した時に,ssh-agentが起動していない場合,ssh-agentを起動してパスフレーズを入力します.一度入力するか,ssh-agentが起動済みで秘密鍵を登録済みの場合は,パスフレーズの入力は不要です.これで,ssh tunnel生活も一安心です.
#!/bin/sh startsshagent() { echo -n "ssh-agent: checking..." if test -f ~/.ssh-agent; then source ~/.ssh-agent fi ssh-add -l >&/dev/null if [ $? -eq 2 ]; then echo -n "ssh-agent: restart...." ssh-agent >~/.ssh-agent source ~/.ssh-agent fi ssh-add -l >&/dev/null if [ $? -ne 0 ]; then echo "ssh-agent: Storing identity." ssh-add fi } stopsshagent(){ echo -n "ssh-agent: stopping..." ssh-agent -k if test -f ~/.ssh-agent then rm -f ~/.ssh-agent fi } while : do startsshagent ssh -Cg -D 1080 foo.bar sleep 5 done
ちなみに,このスクリプトのstartsshagentを.bashrc( or .zshrc)などでログイン時に呼んでおくようにすると,以後のssh/scpを使う時に一々パスフレーズを聞いてこないので,なかなか快適になります.(もっとも最初のログイン時にパスワードとパスフレーズの両方の入力が求められるようになりますが.)