さくらVPSのDebian6環境で動作するVirtualBox上のUbuntu10.04にSSHトンネリング
さくらVPS 1Gを借りて、VirtualBox上にUbuntu10.04をインストールしますぞ。そしてそのUbuntu10.04にアクセスするのです。
Debian6インストール
さくらVPS借りる。
さくらのVPSの基礎
http://dotinstall.com/lessons/basic_sakura_vps
の最初のほう #1 - #4 を参考にした。
送付されてきた仮登録メール見て
さくらインターネットVPSコントロールパネル
https://secure.sakura.ad.jp/vpscontrol/
でさっそく[OS再インストール→カスタムOSインストール→Debian 6 i386(32bit)]をインストール。
この「カスタムインストール」、インストール中に apt-get install upgrade する。インストール後は
apt-get install update; apt-get install upgrade
してもアップデート0であった。
この後は「さくらインターネットVPSコントロールパネル」の「リモートコンソール」画面でおこなう。
SSH
まずSSHの設定。
Port 23422 Protocol 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key UsePrivilegeSeparation yes KeyRegenerationInterval 3600 ServerKeyBits 1024 SyslogFacility AUTH LogLevel INFO LoginGraceTime 120 PermitRootLogin no StrictModes yes RSAAuthentication no PubkeyAuthentication yes IgnoreRhosts yes RhostsRSAAuthentication no HostbasedAuthentication no PermitEmptyPasswords no ChallengeResponseAuthentication no PasswordAuthentication no X11Forwarding yes X11DisplayOffset 10 PrintMotd no PrintLastLog yes TCPKeepAlive yes AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server UsePAM no
http://d.hatena.ne.jp/chabom/20120413/1334245017
を参考にした。
その記事の 25622 というポート番号はなんだろうと思ったけど、SSHのデフォルト 22 に 256を足しただけだね。
PasswordAuthentication の値だけは yesのままにして、puttyでアクセスしたら「Unable to use key file」とか「Server refused out key」とか出てうまく公開鍵認証できない。パスワード認証になってしまう。
調べたら、puttyはLinuxのssh-keygenで作成した id_dsa.pub をそのままでは認識しない。
- puttygen.exeで(SSH2 DSA項目をチェックしてから)[load]ボタンで id_dsa.pub を読み込む(PassPhrase欄に入力したらパスワード必要になる。PassPhrase空にしたらパスワード入力しなくても公開鍵認証できる。両方作っておくといい)
- [save public key]をクリックして id_dsa_putty.pubとかのファイル名で保存。
- [save private key]をクリックして id_dsa_putty.ppkとかのファイル名で保存。
- puttygen.exeのウィンドウに表示される文字列をコピーして $HOME/.ssh/authorized_keys というファイルにペーストする。
- putty.exeのほうで[SSH - Auth - privateKey] に id_dsa_putty.ppk を指定
これでパスワードなしでも認証できた。
ただし、PassPhraseをputtygen.exeで指定した場合も、putty.exeのショートカットの[リンク先] を
Z:\app\putty060_jpini\putty.exe -load "your_putty_save_name" -l your_debian_user -pw your_pass_phrase
にすればアイコンクリックだけでパスワード入力なしにログインできる。
iptables
次にiptablesの設定。
http://d.hatena.ne.jp/chabom/20120413/1334245017
を参考にした。すると DNSサーバーにアクセスできなくなったようで、wget http://www.google.com がアクセス不可になる。
iptablesを無効にしようと思って、Google検索で適当に見たコマンド
# iptables -F
とするとネットワークにアクセスできなくなった。「これはOS再インストールか?」と思ったけど
さくらインターネットVPSコントロールパネル
https://secure.sakura.ad.jp/vpscontrol/
で仮想マシンを[停止→開始]すると iptables -F する前の状態に戻せた。
http://jitsu102.hatenablog.com/entry/2012/04/29/062417
のものに変えると DNSサーバーにもアクセスできる。これで問題なし。
/etc/network/if-pre-up.d/
に配置したスクリプトはOS再起動したとき自動的に実行されるようなので、iptables-persistentはインストールしなくてもよい。
そこに配置した firewall というテキストファイルの中身は具体的には
/etc/network/if-pre-up.d/firewall
#!/bin/sh IPTABLES='/sbin/iptables' # Accept Loopback $IPTABLES -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT $IPTABLES -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT # PING $IPTABLES -A INPUT -p icmp --icmp-type 0 -j ACCEPT $IPTABLES -A INPUT -p icmp --icmp-type 8 -j ACCEPT # SSH $IPTABLES -A INPUT -p tcp --dport 20022 -j ACCEPT # Dropbox LANSync $IPTABLES -A OUTPUT -p tcp --dport 17500 -j DROP $IPTABLES -A OUTPUT -p udp --dport 17500 -j DROP # Other $IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Log $IPTABLES -N LOGGING $IPTABLES -A LOGGING -j LOG --log-prefix "IPTABLES DROP: " --log-level 7 $IPTABLES -A LOGGING -j DROP $IPTABLES -A INPUT -j LOGGING # Drop ALL $IPTABLES -P INPUT DROP $IPTABLES -P FORWARD DROP $IPTABLES -P OUTPUT ACCEPT
VirtualBox
次に VirtualBoxのインストール。
http://d.hatena.ne.jp/chabom/20120413/1334245017
を参考にした。
そのページはdpkgでインストールしているけど、それだと「動作させるために必須のパッケージ(Required)」をいっしょにインストールしてくれないかも‥‥と心配になった。man dpkgしたけどよくわからない。virtualboxはGUIアプリだけど、さくらVPSに用意されてるDebianはServer版なので、GUI、つまりX window system関連のパッケージはインストールされてない。
apt-get install なら確実にRequiredは自動的にインストールしてくれる。できればapt-get install使いたい。公式サイトの
https://www.virtualbox.org/wiki/Linux_Downloads
にしたがい、
/etc/apt/sources.list の末尾行に
deb http://download.virtualbox.org/virtualbox/debian squeeze contrib non-free
と一行たした。(Debian 6はSqueezeという名前もあるのでそれを選んだ)
そして
sudo apt-get update
するとGPG errorとかなる。
wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc sudo apt-key add oracle_vbox.asc
してから
sudo apt-get update
するとvirtualboxをapt-getからインストール可能になる。
sudo apt-cache search virtualbox sudo apt-cache show virtualbox-4.1
でバージョンを確認して、
sudo apt-get install virtualbox-4.1
で必須のもの全部インストール完了。
Ubuntu 10.04 Serverのインストール
VirtualBox上にUbuntu 10.04 Serverをインストールする。
http://www.ftp.ne.jp/Linux/packages/ubuntu/releases-cd/
あたりのミラーサイトで isoイメージを入手。
wget http://www.ftp.ne.jp/Linux/packages/ubuntu/releases-cd/10.04.4/ubuntu-10.04.4-server-i386.iso
VirtualBoxを起動して[New]をクリック。
- 名前 ub1004
- メモリ 512M
- HDD 80G
- ネットワーク1 NAT
- Audio Disable
- USB Disable(DisableにしてもDisableにならない)
で設定して Ubuntuのisoを指定し、[Start]。
Ubuntuインストールでは
- Language: English
- Location: Asia - Japan
- Keyboard: Japan
などを指定する。
インストール終了後、一度shutdownして、
$ cd /home/foo/VirtualBox\ VMs $ XZ_OPT="-9e" tar Jcvf ub1004-1st.txz ub1004/
で保存しておく。スナップショット代わりである。あとでこれを展開すれば、インストール作業を省ける。
VirtualBoxの[Settings]をクリックして、ネットワーク2 Host-only を追加する。
Ubuntuを起動してネットワーク設定する。
$ sudo ifconfig -a
eth0 だけでなく eth1 もあればネットワーク2は認識されている。
$ sudo vi /etc/network/interfaces
書き換える。その内容は
ub1004% diff -u interfaces.orig interfaces --- interfaces.orig 2012-09-07 10:44:40.275459970 +0900 +++ interfaces 2012-09-07 14:46:30.399945617 +0900 @@ -8,3 +8,11 @@ # The primary network interface auto eth0 iface eth0 inet dhcp + +# Host-only +auto eth1 +iface eth1 inet static + address 192.168.56.102 + netmask 255.255.255.0 + network 192.168.56.0 + broadcast 192.168.56.255 ub1004%
そしてついでに環境設定
$ sudo apt-get install zsh lv openssh-server $ which zsh $ chsh
一度ログオフして再ログインしてzshを設定する。
$ sudo visudo
末尾に
foo ALL=(ALL) NOPASSWD:ALL
を追加。
リモートコンソールの中でVirtualBox操作してると、文字が何十文字もまちがって入力されてしまうことがあり、2文字入力してはエコーバックを数秒待つ入力方法で しのいだ。
最初からさくらVPSにUbuntu10.04を入れればよいのでは?
いや、まあDebian6とUbuntu10.04はよく似てるんだが、サポートするFontForgeのバージョンのためUbuntu10.04を使いたかっただけなんだ。
SSHトンネリング
ここまででネットワークは以下の構成でアクセスしている。
[自宅 Windows] → [さくらVPS Debian] → [VirtualBox Ubuntu]
putty で [自宅 Windows] → [さくらVPS Debian] のSSH文字端末アクセスはできる。
putty で [自宅 Windows] →→ [VirtualBox Ubuntu] のダイレクトアクセスするために、SSHトンネリングを設定する。
[自宅 Windows] → [さくらVPS Debian] のSSH文字端末アクセスを実行しているputtyで、[Connections - SSH - Tunnels]に
L23422 192.168.56.102:22
と追加する。
そのputtyで接続状態を維持したまま、別のputtyを立ち上げ、 127.0.0.1:23422 にsshでアクセスする。すると、Ubuntuにアクセスできる。
反応速度は [自宅 Windows→さくらVPS Debian]のSSHも、[自宅 Windows→→VirtualBox Ubuntu]のSSHも同じ感じ。
SSHトンネリングの設定は、アクセス先のVirtualBox内の「Ubuntu」には何の設定も必要ないのか。「Host-onlyネットワーク」を追加しているだけなんだね。あと VNCとかSSHのサーバ起動してるのもあるけど。
中継する「Debian」も何も変更してない。
アクセス元の「Windows」でSSHクライアント putty にTunnel設定してるだけだね。
セキュリティ的に外部からアクセスするには、DebianのSSHの公開鍵認証しか開いていないので、VirtualBox内のWindowsやUbuntuは安全と言える。
しかし、このUbuntu10.04を操作するためには、必要な手順が多くなるね。
- Debian上のVirtualBoxを起動して、Ubuntu10.04を起動する
- puttyでDebianに接続したウインドウを開いたままで、puttyでUbuntu10.04をアクセスする
DebianのSSH公開鍵認証はパスワード入力なしでいけるし、Ubuntu10.04のアクセスは puttyのショートカットアイコンのリンク先を Z:\app\PuTTYPortable\PuTTYPortable.exe -load "127.0.0.1" -l foo -pw MyPass
とするとやはりパスワード入力なしでいける。だからラクなものだよ。
このVirtualBox内のUbuntu10.04と、Debian6は、以下のコマンドでファイルをやりとりできるぞ。Debian6のグローバルIPアドレスを49.212.123.45とする。
# Debian6 → Ubuntu10.04 ub1004$ scp -i .ssh/id_dsa -P 23422 foo@49.212.123.45:/home/foo/.zshrc . # Ubuntu10.04 → Debian6 ub1004$ scp -i .ssh/id_dsa -P 23422 .gitconfig foo@49.212.123.45:/home/foo/
UbuntuLinux入門キット12.04対応 (INTRODUCTION KIT SERIES)
- 作者: 水野源
- 出版社/メーカー: 秀和システム
- 発売日: 2012/06/21
- メディア: 単行本
- クリック: 9回
- この商品を含むブログ (5件) を見る