Serversman@VPSを借りてみた

Serversman@VPSを借りてみた。
月額ワンコインの安さに惹かれてしまった。Servesrmanは、OpenVZで動いているらしい。
最近、LinuxのLXCに興味があるのだが、よく似たアーキテクチャだというのも、このサービスを選んだ理由のひとつだ。

実は私もフリーランスのため、最近流行のノマドワークができないことはない。
ネットに繋がれば、どこでも仕事はできるのだ。
と言いつつ、ネットにはつながっても、SSHがつながらない環境というのもある。
そんなときに困るので、stoneVPSに導入してみた。

その時の備忘録を書いておく。

Serversman@VPSのOSは、Ubuntuにした。自分が使っているOSだということと、stoneがapt-getでインストールできるため。。(自分でビルドすればよいんだけどね。。)

申し込みをすると、IPアドレスとrootのパスワードが発行されるので、sshでアクセス。
(※デフォルトのSSHポートが3843であるため、注意が必要。)

$ ssh -p 3843 root@xxx.xxx.xxx.xxx

とりあえず、localeの設定

# apt-get install language-support-ja
# dpkg-reconfigure locales

「sudo: unable to resolve host ***」対策として、/etc/hostsに「127.0.1.1」を追加

# vi /etc/hosts
127.0.1.1 foo.localdomain foo

localeとhostsの設定を行った所で、一旦再起動。

# shutdown -r now

何はともわれ一般ユーザを作成。

# adduser hoge

一般ユーザにsudo権限を追加。

# visudo

hoge ALL=(ALL) ALL

これで、一般ユーザからsudoできるようになったので、一旦sshを終了して、再ログインする。

stoneのインストール

$ sudo apt-get update
$ sudo apt-get install stone

今回は、サーバ側では、ポート443(※HTTPSのポート)で待ち受けて、SSHポート(3843)に中継させる。さらにクライアント側にもstoneを入れて、ssh over httpsを行う。つまり、sshhttps通信に偽装するのだ。

まずは、サーバ側でstoneを動作させるのだが、その前にApacheSSLとポートがぶつかるため、ApacheSSLを無効にする。

$ sudo vi /etc/apache2/ports.conf
# Listen 443

「Listen 443」となっている箇所をコメントアウトする。

SSLの設定を無効にして、Apache再起動。

$ sudo a2dissite default-ssl
$ sudo /etc/init.d/apache2 restart

サーバ側で、stoneを実行。

$ stone -l localhost:3843 443/ssl

クライアント側で、stoneを実行。

$ stone -l localhost:10443/ssl 10022 -- xxx.xxx.xxx.xxx:443 10443

クライアント側で、10022ポートに対して、ssh接続を行う。

$ ssh -p 10022 hoge@localhost

これで、httpsポートが空いている環境であれば、sshできるようになった。

後は、サーバ側を自動起動するように設定しておく。
「/etc/init.d/stone-sshd」を以下の内容で作成しておく。

#! /bin/sh

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="TCP/IP packet repeater in the application layer"
NAME=stone
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-l localhost:3843 443/ssl"
SCRIPTNAME=/etc/init.d/$NAME
KILL=/usr/bin/killall

[ -x "$DAEMON" ] || exit 0

case "$1" in
  start)
	echo "Starting $DESC:" "$NAME"
	$DAEMON $DAEMON_ARGS &
	;;
  stop)
	echo "Stopping $DESC:" "$NAME"
	$KILL $NAME
	;;
  *)
	echo "Usage: $SCRIPTNAME {start|stop}" >&2
	exit 3
	;;
esac

クライアント側で実行するコマンド「stone -l localhost:10443/ssl 10022 -- xxx.xxx.xxx.xxx:443 10443」はalias設定しておくと便利かも。

alias stone-ssl='stone -l localhost:10443/ssl 10022 -- xxx.xxx.xxx.xxx:443 10443'

自動起動するよう設定

sudo update-rc.d stone-sshd defaults

2012年7月27日 追記