Eu tentaria armazenar o ID do processo filho conforme indicado aqui
sshPID=""
disconnect()
if [ "x$sshPID" != "x" ]; then
kill "$sshPID"
sshPID=""
fi
}
connect() {
ssh -A -D 9999 some_server "sleep $socksProxyTimeout; " & sshPID=$!
trap 'disconnect' EXIT
}
connect
sleep 3
disconnect
Você pode usar ssh -O exit some_server
em vez de kill, dependendo de usar ControlMaster
setup. (veja ssh docs).