[話者] さくら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の設定。
/etc/ssh/sshd_config
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:060_jpini.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文字入力してはエコーバックを数秒待つ入力方法で しのいだ。
Ubuntu再起動。 これでUbuntuはOK。
[合いの手] 最初からさくら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:.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/
0 件のコメント:
コメントを投稿