HTTP しか通さない所に ssh する

てんこう の発言 : 客先にサーバー収めるのぢゃが
てんこう の発言 : ルーターで 80 番しかあいてないんだわな
てんこう の発言 : ssh over HTTP なんていう
てんこう の発言 : ソリューションは
てんこう の発言 : ないもんかのぉ?w
(中略)
masy の発言 : たとえば、適当に顧客サーバからてんこうさんの会社にたいして
masy の発言 : ssh tunnel はらすような shell 書いといて
masy の発言 : cron で切れてたら再接続?
てんこう の発言 : それだ!
masy の発言 : passphrase なしで login できる鍵をつくって
masy の発言 : おいとくっすかね。
(中略)
masy の発言 : ssh -R 10022:localhost:22 remotehost
masy の発言 : とかで、remotehost の port 10022 に接続すると
masy の発言 : localhost の port 22 にいくかな?
てんこう の発言 : なるほど
masy の発言 : -R でだめだったら -L (わら

* トンネルの貼り方

秘奥義発見!

#! /bin/sh
#
# sshtunnel:	creates ssh tunnel from surf:10123 to local:telnet
#
# Version:	2002-04-12 by NAKANO Takeo
#
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/ssh
NAME=ssh
DESC="ssh tunnel to surf"
test -x $DAEMON || exit 0
set -e
case "$1" in
  start)
	echo -n "Starting $DESC: "
        if (ps uax | egrep -v '(ps|grep)' | grep -q 10123:localhost:23); then
           echo already running
           exit 0
        fi
	$DAEMON -f -1 -l apexp -R 10123:localhost:23 surf.ap.seikei.ac.jp \
		ping -i 60 localhost >& /dev/null
	echo "$NAME."
	;;
  stop)
	echo -n "Stopping $DESC: "
	killall $NAME
	echo "$NAME."
	;;
  restart|force-reload)
	echo -n "Restarting $DESC: "
	killall $NAME
	sleep 1
	$DAEMON -f -1 -l apexp -R 10123:localhost:23 surf.ap.seikei.ac.jp \
		ping -i 60 localhost >& /dev/null
	echo "$NAME."
	;;
  *)
	N=/etc/init.d/$NAME
	echo "Usage: $N {start|stop|restart|force-reload}" >&2
	exit 1
	;;
esac
exit 0

これを /etc/init.d にいれて、hourly で sshtunnel start するとおけらしい。すばらしい。

* remotehost 以外の host から remotehost の port 10022 に接続

ssh -oGatewayPorts=yes -R 10022:localhost:22 remotehost

らしい。なるほど。