アカベコマイリ

HEAR NOTHING SEE NOTHING SAY NOTHING

さくらのVPS を使いはじめる

ちまたで話題になってるさくらのVPS を使いはじめた。

月額 980 円で root 権限あり。個人用途なら十分に実用的となれば契約しない手はないだろう。ちょうど Redmine を動かすために root 権限が欲しいなあと思っていた (Passenger を利用したい) ので、これはまさに渡りに船である。

これまで Linux 学習用に VMware Player と CentOS を利用していたのだが、さくらのVPS も CentOS なのでこの用途も引き継げそうだ。ゼロから実働するサーバー環境を整えることで得られるものも多いだろう。

というわけで、さくらのVPS を使ってゆきながら作業メモを残してゆく。VPS を再インストールしたときにも、このメモが役立つかもしれない。長くなることは確実なので記事は数回に分ける予定。

用意するもの

サーバーでおこなう作業のためにまずは SSH クライアントを用意する。私の場合はコマンド操作に TeraTerm、ファイルの送受信に WinSCP を利用している。この記事はこれらを利用しているものとして書く。ファイル編集に関して Windows 中心でゆきたいなら WinSCP がとても役立つ。

ドラッグ & ドロップによるファイルの送受信やダブル クリックでサーバー上のファイルを開いてそのまま Windows 上で編集できる。正確には Windows 上に一時ファイルを作成して更新されたらサーバー送信しているのだけど便利である。

WinSCP にはインストーラ版とポータブル版が用意されている。インストーラー版は PuTTYgen という便利ツールも一緒に入れてくれるので、こちらを強く推奨する。この記事でも PuTTYgen を RSA の鍵作成に利用する。

サーバーの起動とコントロールパネル

VPS を契約すると「[さくらのVPS] 仮登録完了のお知らせ」というメールが送られてくる。その中には以下のような部分がある。

《VPSコントロールパネル ログイン情報》 VPSコントロールパネルでは、仮想サーバのリセットやリモート コンソールでの接続、OSの再インストールなどを行うことができます。 URL : https://secure.sakura.ad.jp/vpscontrol/ IPアドレス: XXX.XXX.XXX.XXX パスワード: XXXXXXXXXXXXXXXXXXXXXXXX

URL が VPS を管理するためのコントロールパネルのログイン ページを示している。アクセスすると IP アドレスとパスワードの入力欄があるので、それぞれ入力してログインをおこなう。するとコントロールパネルのページに移動するので「起動」ボタンを押す。

少し待ち、ステータス欄の「更新」ボタンを押すと欄内の表示が稼働中に変わる。これでサーバーが起動した。サーバーの停止と再起動もこのページからおこなえる。

VPS コントロールパネル

コントロールパネルには、他にもリモートコンソールや OS 再インストール機能が用意されている。リモートコンソールは JavaScript で作られたブラウザ上のコンソールで TeraTerm などを用意しなくても、ここからサーバーにログインしてコマンド実行をおこなえる。

リモートコンソール

コンソール上部の「リモートコンソール」というタイトル右アイコンからクリップボードの内容も貼り付けられる。応答性もよい。なおこのコンソールは SSH でパスワードによるログインを禁止していても関係なくログインできるので注意が必要。

サーバーの設定をいじっている内に不安定になったり起動不能になったときは OS の再インストールを利用することで、サーバーを初期状態に戻せる。

OS再インストール

root のパスワードを入力して「確認」ボタンを押すと再インストールできる。試してみたところ 5 分もかからずに完了した。どのような仕組みになっているのか謎なのだが root のパスワードを変更していた場合、再インストール後の環境にもそれが引き継がれる。

root のパスワード変更とユーザー作成

サーバーが起動したらさっそくログインしてみよう。初期状態では root ユーザーだけが存在し、さくらインターネットから送られてきたメールに書かれていた初期パスワードが設定されている。これはメールにも警告されているように真っ先に変更すること。

UNIX 系 OS では通常のユーザーでログインして root 権限が必要なときだけ sudo コマンドで特権を委譲してもらうか、su コマンドで一時的に root となるのが一般的。基本は sudo、root 権限が必要な作業が大量にあるときだけ 万全の注意を払い root になるのがよいだろう。どちらにせよ root 以外に必ずユーザーを作成する。

TeraTerm を起動して「新しい接続」ダイアログに IP アドレスを入力して OK ボタンを押す。次の「SSH 認証」ダイアログではユーザー名に root、パスフレーズへ初期パスワードを入力して OK ボタンを押す。入力内容が適切ならこれでログインがおこなえる。

まずは root のパスワードを変更する。passwd と入力して Enter キーを押すと新しいパスワードと確認の計 2 回、入力を求められる。成功すると以下のようになる。

# passwd
Changing password for user root.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

私は 以前このブログで紹介したサービスでパスワードを生成しているのだが、ランダムな文字列で入力難度が高いのでクリップボードにコピーして貼り付けている。ちなみに TeraTerm の貼り付けは Alt + V か、メニューから「編集」→「貼り付け」を選ぶことでおこなる。パスワードそのものは KeePass というツールで管理しており必要なときだけ取り出すようにしている。

次に普段の作業用ユーザーを作成する。これは useradd コマンドでおこなう。作成したなら、すぐにパスワードを設定する。これは先ほど使用した passwd コマンドにユーザー名を指定することでおこなる。成功すると以下のようになる。

# useradd test
# passwd test
Changing password for user test.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

ここで TeraTerm のメニューから「ファイル」→「新しい接続」を選び、さきほど作成したユーザーでログインできることを確認しておく。

SSH 接続用の RSA 鍵を作成する

パスワード設定だけでは安全性に不安があるので、次は RSA 公開鍵認証を設定し、パスワードログインを禁止する。まず PuTTYgen を起動する。WinSCP をインストールしているならばスタート メニューから「すべてのプログラム」→「WinSCP」→「鍵関連ツール」→「PuTTYgen」を選ぶ。

PuTTYgen

起動したらウィンドウ下部のラジオボタンにある「SSH-2 RSA」を選択して「Number of bits in a generated key」欄に 2048 と入力。初期値は 1024 となる。これは鍵のビット数で多いほど強度が高い。その後に「Generate」ボタンを押す。

すると鍵の生成が開始されてプログレスバーが表示される。しかし眺めているだけだと一向に進まない。画面には Please generate some randomness by moving the mouse over the blank area. とある。プログレスバーの下あたりでマウスカーソルをグリグリと動かすとバーがモリモリ進みはじめるので完了するまで動かし続ける。

RSA 鍵の生成

鍵の生成が完了すると以下の画面になるので「Key passphrase」欄と「Confirm passphrase」欄に RSA 鍵を暗号化するためのパス フレーズを設定する。必須ではない。鍵自体が盗まれるような状態ではパス フレーズなんて気休めにしかならないという意見もあるので、そう思うなら設定しなくてもよい。私は設定する派である。

RSA 鍵が生成された状態

ここまでで鍵の生成と設定が完了したのでファイル化する。

「Save private key」ボタンを押して秘密鍵ファイルid_rsa という名前で保存する。 拡張子は .ppk なので id_rsa.ppk というファイルが作成される。

次に秘密鍵ファイルを保存したフォルダに id_rsa.pub という名前のテキスト ファイルを作成してエディターで開く。PuTTYgen の「Public key for pasting into OpenSSH authorized_keys2 file」欄に表示されているテキストをコピーして貼り付けて保存する。

内容は以下のような感じ。末尾は鍵の生成日時になるようだ。必ず 1 行になるので改行が入っていたら消しておく。これが公開鍵ファイルとなる。

"ssh-rsa ...中略... rsa-key-20100909"

最後に TeraTerm 用の秘密鍵ファイルを作成。PuTTYgen のメインメニューから「Conversions」→ 「Export OpenSSH key」を選択して id_rsa という名前で保存する。拡張子はない。ここまでの手順を終えると、以下のファイルが作成されるはず。

ファイル名 種類 内容
id_rsa.pub 公開鍵 RSA 公開鍵。サーバー側に置く。
id_rsa.ppk 秘密鍵 RSA 秘密鍵。WinSCP や PuTTYgen で利用。
id_rsa 秘密鍵 OpenSSH 用 RSA 秘密鍵。TeraTerm などで利用。

公開鍵や OpenSSH 用の秘密鍵を保存し忘れても PuTTYgen で .ppk ファイルを開けば鍵を生成した状態に戻れるので再度、保存すればよい。

サーバーの SSH 設定を変更

TeraTerm からサーバーに RSA 認証をおこないたいユーザーでログインする。root ではないので注意する。そしてそのユーザーの HOME 直下に .ssh というディレクトリを作成する。コマンドの流れは以下。

$ cd $HOME
$ mkdir .ssh
$ chmod 700 .ssh

ログインした時点で HOME にいるはずだが念のため移動してからディレクトリを作る。パーミッションは 700 (自分だけ読み書き可能) にしておく。

次に WinSCP から同じユーザでログイン。作成しておいた .ssh ディレクトリ内に RSA 公開鍵となる id_rsa.pub を送信する。そしてファイル名を authorized_keys に変更してパーミッションを 600 にする。名前の変更とパーミッション設定のコマンドは以下。

$ mv id_rsa.pub authorized_keys
$ chmod 600 authorized_keys

これで鍵の配置は完了。残りは SSH デーモンの設定変更となるので su コマンドを実行して root になる。

$ su -
Password:
#

次に /etc/ssh/sshd_config を編集。この時点では root でパスワード ログイン可能だから vi に馴染んでいないなら WinSCP から開いて Windows 上のテキストエディタで編集してもよい。

PermitRootLogin (root のログイン) と PasswordAuthentication (パスワードによるログイン) を no に設定する。書式は設定名の後に yes で有効、no で無効、行頭に # でコメントアウトとなる。例えば、以下のように書く。

#PermitRootLogin yes
PermitRootLogin no

... 中略 ....

#PasswordAuthentication yes
PasswordAuthentication no

編集して保存したら SSH デーモンを再起動する。

# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

設定に誤りがあればコマンド実行時にエラー メッセージが表示されるので修正する。ここまでの手順がすべて適切ならば以降はパスワード ログインが禁止され RSA 鍵の参照が必須となる。例えば TeraTerm の SSH 認証なら以下のようになる。

TeraTerm の SSH 認証

システム更新

RSA 鍵でログインできるようになったら最後にシステムを更新しておく。これはいわば Windows Update のようなもので定期的に実行することになるだろう。

更新には yum というコマンドを使用する。実行は root になるか sudo を利用する。今はまだ sudo を設定していない ( 次回におこなう予定 ) ので root からおこなう。コマンドを実行すると、はじめにダウンロードするパッケージ一覧とサイズが表示されダウンロードの実行を問い合わせられ。y と入力して Enter を押す。

$ su -
Password:
# yum update

...
Install       2 Package(s)
Upgrade      16 Package(s)

Total download size: 34 M
Is this ok [y/N]: y

次に、GPG キーをインポートするという問い合わせがある。これも y と答えて Enter。

warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897
updates/gpgkey                                                                                           | 1.5 kB     00:00
Importing GPG key 0xE8562897 "CentOS-5 Key (CentOS 5 Official Signing Key) <centos-5-key@centos.org>" from /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
Is this ok [y/N]: y

しばらく待ってアップデート完了。

...今回はここまで。

Comments from WordPress

  • タビエル タビエル 2011-12-19T17:24:46Z

    はじめてVPSをさわってみたド素人です。いろいろなサイトを見ながら設定するもどれもチンプンカンプンでしたが、アカベコさんの説明が一番わかりやすく、やっとこのページの終わりまで設定することができました。

    ありがとうございます!

  • IW 2012-09-24T01:50:03Z

    はじめまして。vpsを開発環境にしようと思い借りたものの、サーバー設定はやったことないド素人で頭を抱えていたところ、アカベコさんの記事を拝見し、大変わかりやすくあっというまに設定が完了しました! 本当に感謝しております。

    賛否あるものの、VPSにsambaを入れたいと思ってはいるのですがいまいちうまく機能してくれません。。。 もしよろしければ参考記事を書いていただけると嬉しく思います。 ご検討ください。

  • akabeko akabeko 2012-09-24T23:24:12Z

    IW さん、こんにちは。
    さくらのVPS & samba なら、以下の記事が参考になりそうです。

    さくらのVPS(レンタルの仮想サーバー)をもっと楽しもう!
    http://inst-web.com/information/vps-more003.html

    samba と周辺ツールを yum からインストールしており、また、具体的な設定も書かれているので、迷うことなく導入できるのではないでしょうか。

    なお、今のところ samba について取り上げる予定はありません。

    VPS を共有ファイルサーバーとして利用するつもりがなく、個人的なファイルの送受信であれば SCP/SFTP で十分だと感じています。

    不特定多数にファイルサーバーを公開するのは、非常にリスクが高いです。samba を動作させるだけなら前述の記事でことたりますが、実運用されるなら、セキュリティについても相当、考慮する必要があります。

    個人的に、samba はイントラネット用だと思っています。

    SCP/SFTP については、WinSCP や Cyberduck のような GUI クライアントもあるため、samba ほどではないですが、使い勝手もそこそこです。

  • ssi 2012-10-02T03:45:46Z

    はじめて書き込ませていただきます。
    あかべこさんの記事を参考にサーバーの設定をさせていただきました。
    本当に助かりました。ありがとうございます。

    もし、よろしければさくら vpsでメールサーバーの設定の記事を書いてはいただけませんでしょうか?

    設定をしたく、記事を探したのですがあかべこさんほど親切で丁寧な記事を発見できずになかなかうまく設定できず悩んでいました。

    できれば、送受信・メーリングリストの作成あたりを詳しく教えていただければ幸いです。
    もし、可能でしたらよろしくお願いいたします。