HOKYPOKY.BLOG

Rackspace!! (1) – CentOSを入れ初期設定を行う

英語の電話は済みましたか?おつかれ様でした。英語の電話が終わりしばらくするとアクティベートされます。
まだ契約していないという人は、今後の参考にしてください。

使用するOSはサーバーがCentOS 5.5、クライアントはMac OS X 10.6 (Snow Leopard)です。

とても長いので目次をつけました。

  1. Rackspace Cloud ServersにCentOSをインストール
  2. CentOSの初期設定 – SSHの設定
    1. CentOSの初期設定 – SSHの設定
    2. さらに強固な設定にする
      1. 新しいユーザーを作る
      2. 作成したユーザーに認証鍵を登録する
      3. ルートユーザーではログインできないようにする
      4. パスワードではログインできないようにする
      5. 認証鍵でログインできるようにする
  3. CentOS初期設定 – その他の設定
    1. HOSTNAME= の内容をFQDNに書き換える
    2. サーバのグローバルIPアドレスに対応する行のホスト名をFQDNに書き換える
    3. ロケールの変更
    4. タイムゾーンの変更
  4. 再起動する
  5. バックアップをとる
  6. まとめ

Rackspace Cloud ServersにCentOSをインストール

アクティベートしたら早速管理画面に入ります。

Rackspace 管理画面 ログイン

スマートな管理画面です。左メニューよりHosting > Cloud Servers を選択してください。

Rackspace 管理画面 サーバー一覧

サーバー一覧が表示されます。ボクの場合はすでにサーバーインスタンスを1つ作ってあります。そのままAdd Serverをクリックします。

Rackspace 管理画面 OS選択

選べるOSがいっぱいありますね。タブからWindowsを選択するとWindowsサーバーを選択することもできます。今回は愛しのCentOS5.5を使うことにします。今後このブログではCentOSを使っての設定方法になります。
Red Hat Linux(REHL)、FedoraはCentOSと同系列ディストリビューションですので、流用は効くと思いますが自分は触ったことありません。CentOSはREHLのクローンで商用サポートのないOS。古臭いですが、枯れた確かなパッケージを使っています。FedoraもREHLからの派生ですが、最新の技術を積極的に取り込むディストリビューションです。

Rackspace 管理画面 名前 スペック選択

サーバーの名前を付けてスペックを選択しましょう。256MBのプランにします。HDDは10GBです。CPUはインスタンスに比例するらしいですがコンパイルなどを見る限り遅くはありません。EC2の2倍速いらしいです。
名前はFQDN(サブドメインを含むドメイン名)にしておくのがいいですよ。サブドメインなしで運用する場合はドメイン名で。

CentOSの初期設定 – SSHの設定

しばらくすると申請完了メールがとどきます。IPとrootのパスワードが書いてあります。
危険ですので早速rootのパスワードを変更しましょう。ターミナルからSSHを使ってのリモートで設定していきますのでクライアントでの作業とします。

メールに書いてあるIPと危険なrootパスワードをつかってログインします。
ターミナル(Macだとターミナル.app)を開きます。

$ ssh root@xxx.xxx.xxx.xxx

xxx.xxx.xxx.xxxはメールに付いていたIPアドレスに置き換えてください。
また、Enterを押すとなにやらyes/noを聞かれます。これはサーバー側から証明書が送られてくるので記憶するかどうかという質問です。今後、パスワードログインをしない方向で考えていますのでyesとしておきましょう。

rootでログインできました。怖いので早速パスワードを変更します。

# passwd
(current) UNIX password:
New UNIX password:
Retype new UNIX password: 

現在のパスワードを聞かれ、新しいパスワードを二回入力するとパスワードが変更されます。
今後、メールに記載されているパスワードは何の意味もありませんし、今回入力したパスワードは再入手できませんので大切に保管してください。

次にポートをチェックしましょう。初期設定では22番(SSH)以外閉じられています。
また、Webサービスを展開することを考えていますので、HTTPの80番ポートを開けておきましょう。
別にこれはあとででもいいです。

# vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

80番ポート(HTTP)を開けたい場合は太字を追加してください。
変更した場合はファイアーウォールを再起動します。

# service iptables restart

さらに強固な設定にする

ひとまず危険な状態を逃れることができました。ウミガメの子どもが海に入りカモメの群れから逃れた感じです。しかし海にはまだ危険がたくさんあります。いきなりルートユーザーでログインできることや、そもそもパスワードでログインできてしまうことの危険を考えると怖いです。

そこで以下のようなカッチカチの設定にしましょう。

  1. 新しいユーザーを作る
  2. 作成したユーザーに認証鍵を登録する
  3. ルートユーザーではログインできないようにする
  4. パスワードではログインできないようにする
  5. 認証鍵でログインできるようにする

カッチカチやぞ!

パソコンが盗まれ、ユーザー名がばれず、さらにルートユーザーパスワードがばれない限り安心です。絶対にパソコン内にユーザー名、パスワードを保存しないようにしましょう。
もしもパソコンが盗まれた場合にも、そのパソコンからアクセスされないようにすればいいわけです。
パソコンが壊れてしまった場合、二度とログインできなくなってしまうほどです。できれば二台設定しておきたいです。iPadやiPhoneのSSHクライアントソフトもありますのでそれらを使うのがいいでしょう。

以前もCentOSでのSSHの設定について書いたのであわせて読んでください。

サーバーつくった。その3 – SSHでログインするよ。

ただ、以下の手順で設定できますのでこのまま進めます。

新しいユーザーを作る

あたらしいユーザーは「pickles(ピクルス)」にします。適宜読み替えてください。また、推測されないユーザー名がいいですね。自分の名前やアカウント名は避けたほうがいいでしょう。

$ ssh root@xxx.xxx.xxx.xxx
# useradd pickles
# passwd pickles
New UNIX password:
Retype new UNIX password: 

もし間違えてしまった場合やユーザーを消したい場合は以下で削除できます。

# userdel pickles

作成したユーザーの権限を替えます。wheelグループに「pickles」を追加しましょう。

# usermod -G wheel pickles

以下を実行して「wheel:x:10:root,pickles」と書いてある行があればOKです。

# cat /etc/group

wheelグループ以外のユーザーはrootになれないように設定します。

# vi /etc/pam.d/su

#auth       required     pam_wheel.so use_uid // と書いてある行をさがす
auth       required     pam_wheel.so use_uid // 先頭の「#」を削除します

これで作成したユーザーのみがrootになれるようになりました。
SSHから抜け(Terminalを終了)、再度作成したユーザーでログインしてみます。
(この時きかれるパスワードはpicklesのパスワードとなります。)

$ ssh pickles@xxx.xxx.xxx.xxx

今ログインしているユーザーがだれか確かめます。

$ whoami
pickles

次にrootユーザーになれるか試してみます。このとき聞かれるパスワードはルートのパスワードとなります。

$ su -

ルートになったか確認します。と、その前に$が#に変わっていることに気が付きませんか?
#はルートユーザーであるということを示します。一応確認します。

# whoami
root

rootユーザーを終了し、picklesユーザーに戻ります。

# exit
作成したユーザーに認証鍵を登録する

これではパスワードログインのできるユーザーが増えてしまっただけなので、次にすすみます。
次は認証鍵とよばれるものを設定していきます。

認証鍵がなんなのかということはかわいいイラスト付きのこのブログを読んでみてください。
小悪魔女子大生のサーバエンジニア日記 » Blog Archive » 公開鍵暗号方式によるユーザー認証のしくみ

まずアクセス元するパソコンで鍵を作ります。
ボクはMacなのでMacでの説明となります。

その前に、既に鍵が作られていないかチェックします。

$ ls ~/.ssh/

ここにid_rsa.pubというファイルがある場合は以下をスキップしてください。
ない人のみ以下を進めてください。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/usako/.ssh/id_rsa): // 空Enter
Enter passphrase (empty for no passphrase): // 空Enter
Enter same passphrase again: // 空Enter

これで認証鍵が設定されました。passphraseを設定しても構いません。もし設定する場合は8文字以上の大文字小文字数字を混ぜたものにしたほうがいいそうです。ただ、運用上パスワードがたくさんできてしまいヒューマンエラーが起きてしまうことやpassphraseがあまり意味を成さないことを考えるとそのまま空Enterでも問題ありません。

次にこれをサーバーに転送します。

$ scp ~/.ssh/id_rsa.pub >> pickles@xxx.xxx.xxx.xxx:pickles.pub

SSHログインして、転送された鍵を登録します。注意するのはルートユーザーではなくpicklesでの作業となります。

$ ssh pickles@xxx.xxx.xxx.xxx
$ mkdir -p ~/.ssh
$ chmod 700 ~/.ssh
$ cat pickles.pub >> ~/.ssh/authorized_keys2
$ mv pickles.pub
$ cd ~/.ssh
$ chmod 600 authorized_keys2
ルートユーザーではログインできないようにする

SSHのコンフィグを行います。以下はまとめて設定できます。
ルートユーザーになり、コンフィグファイルを開きます。

$ su -
# vi /etc/sshd_config

rootでのSSHログインをOFFにします。

Before:

#PermitRootLogin yes

After:

PermitRootLogin no
パスワードではログインできないようにする

パスワードでのログインを無効にする。

Before:

#PasswordAuthentication yes

After:

PasswordAuthentication no

空パスワードでのログインを無効にする

Before:

#PermitEmptyPasswords no

After:

 PermitEmptyPasswords no
認証鍵でログインできるようにする

これはデフォルトでONになっているので何も設定しないでもOKです。
もし以下のようになっていたらyesまたはコメントアウトしてください。

Before:

PubkeyAuthentication no

After:

PubkeyAuthentication yes

または

#PubkeyAuthentication yes // 一応デフォルト値でコメントアウトする

最後に上の方にもどりログ出力のレベルを替えておきます。

Before:

#SyslogFacility AUTH

After:

SyslogFacility AUTHPRIV

以上でSSHの設定は終わりです。

CentOS初期設定 – その他の設定

その他やっておくといいことです。

HOSTNAME= の内容をFQDNに書き換える。

サーバーインスタンスを作る際にいれた名前がFQDNで設定していると思うので設定されていると思います。

# vi /etc/sysconfig/network
HOSTNAME=www.example.com

サーバのグローバルIPアドレスに対応する行のホスト名をFQDNに書き換える

これも設定されていると思います。

# vi /etc/hosts
127.0.0.1     localhost localhost.localdomain
xxx.xxx.xxx.xxx     www.example.com

ロケールの変更

日本にする場合は以下です。

# vi /etc/sysconfig/i18n
LANG="ja_JP.utf-8"

タイムゾーンの変更

サーバー時間を日本にする場合は以下です。

# cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# vi /etc/sysconfig/clock
ZONE="Asia/Tokyo"

ロケーションやタイムゾーンに関してはあくまでサーバーの設定ですので、アプリケーションでのロケーションやタイムゾーンはアプリ側できちんと設定、実装するようにしてください。

時刻同期の設定も行ないます。

# yum install ntp
# /sbin/chkconfig ntpd on
# /etc/init.d/ntpd start

参考文献
Rackspaceで借りたCentOSサーバで最初にする設定 | maeda.log

再起動する

以上でサーバーのコンフィグが終わりましたので再起動しましょう。
またこれから管理画面での作業となります。

管理画面左メニューより Cloud Servers に入ると先程作成したサーバーインスタンスが表示されています。これをクリックします。

以下のような画面になりますので、Rebootをクリックします。程なく再起動されます。

Rackspace 管理画面 サーバーインスタンス

ちなみにSSHからも再起動できます。

# reboot

バックアップをとる

再起動したら、先程の画面のタブよりImagesを選択します。以下のような画面が現れます。

「Daily Backup Window (GMT):」「Weekly Backup Window:」からバックアップの周期を選択できます。
Weeklyで水曜日のバックアップにしました。一応想定するユーザーが一番少なそうな日です。

まとめ

以上、とても長くなりましたがRackspaceの初期設定が完了しました。最後まで読んでくれてありがとうございます。
ここまでの設定はCentOSでのものとなりました。途中にも書きましたがREHLやFedoraも同様に設定できますし、サーバー用途としては一番使われているディストリビューションです。

またRackspaceに限らず、サーバーを運営する際のSSHの設定は細かく説明したつもりですので他のサービス、サーバーをセットアップする際も参考にしてみてください。

Rackspace!! (0) – Rackspace Cloud Serversとは?

例えば個人でWebサービスをつくろうと思ったとき、「もしも」「仮に」ユーザーが増えたらどうしようなんて考えたことないですか?
HOKYPOKYは現在Dreamhostでホスティングしていて結構なスペックだったりするから不満はないのだけどそれも個人サイトだからという話。Webサービスがある程度大きくなったとしたら引越しが必要になってしまいます。
よーし、お父さん自宅サーバー作っちゃうぞー!(独身)っていうのも悪くないですが、家の回線にユーザーがアクセスしにくるなんて考えるとそれもそれで大変そう。しかもサーバーのメンテナンスとかに悩まされたくないですよね。専用スタッフを雇ったりするお金はありません。
理想でいえば小規模からはじめられて、簡単にサーバーを大きくできること。

そこでクラウドです!!

「興味ないね」

いやいやそのクラウドじゃないです。(定番ネタ)

クラウドホスティングサーバーとは?種類と特性

クラウドが何かというところは割愛しますが、クラウドホスティングサーバーの有名どころでは、Google App Engine (以下GAE)とAmazon EC2Microsoft Windows Azureなんかがあります。

GAEは、無料からはじめられるクラウドです。
PaaSと呼ばれる形式で、既にシステムが構築されている中で自分のアプリケーションを置くことができます。そして使えるプログラムがPythonとJava。Javaが使えるのでJRubyやScalaなども使うことができます。たとえばJRubyではRailsをつかうことができますが、JRubyとGAE(PaaS)による制限が発生します。自由なレールの上に石ころがいっぱい転がっている感じ。思わぬ事故が発生するかもしれないし、全部の石をどけるのも億劫ですし、なにより線路の上に石ころが転がっていますから遅いです。条件があえばかなり魅力的なクラウドとなっています。

ならばAmazon EC2だ!
Amazon EC2はIaaSと呼ばれる形式で、言ってしまえば仮想専用サーバーなので自分で自由に環境を構築することができるのでオススメではありますが、一番下のプランでもちょっとお高い。さらに下のプランが32bitで上のプランが64bitとなっていたりで、スケールアップしていく際にここが障害になるかもしれません。
ドキュメントも出揃ってきているのである程度予算が確保されているのであればEC2にしていれば問題はないでしょう。

Microsoft Windows Azureは詳しく調べていませんが、Amazon EC2の方が評判はいいみたいです。
後発なのでこれからが注目でもはあります。

Rackspace Cloud Servers

長くなりましたがAmazon EC2はちょっと高いと感じる方に、RackspaceCloud Serversをオススメします。
念を押して言いたいのですが、安いからしょぼいサーバーというわけではありません!
RackspaceはAmazon EC2と同じくIaaS形式で、TumblrGithubをホスティングしているという実績もあり(Tumblrは噂)、CPU時間が$0.015/h、11$/月という安さからはじめられる。メモリは256MBと小さいですが大きくすることも可能です。
レンタルサーバーレベルから巨大なサーバーにまでできるサーバーそのものなんです。

IaaSですから愛しのCentOSを入れることもできますし、WindowsServerやUbuntu、RedHat Linux、Gentooなどから選ぶことも可能です。仮想専用サーバーなのでroot権限はもちろん、カスタマイズは自由自在です。一昔前では個人で専用サーバーを借りるなんて勇気のいることでしたがかなり気楽なものです。

Rackspace Cloud Files

Amazon EC2に対するAmazon S3と同じくRackspace Cloud Filesというストレージサーバーもあります。
これもS3と同じような価格でRackspace Cloud Serversとの親和性も高いので画像ファイルやムービーなどを扱う場合はこちらを使うのがいいかもしれません。アプリケーションサーバーとファイルサーバーを分けることで価格的に効率のよいサービスが提供できます。
詳しいことはここでは書きませんが、データの転送にも価格がかかり、S3の方が若干安い。Amazon EC2とAmazon S3、Rackspace Cloud ServersとRackspace Cloud Filesはそれぞれ別サービスなので、ストレージサーバーのみをAmazon S3にするということも考えられます。

Rackspace Cloud Serversを借りてみた

さっそく借りてみました。フォームから入力していくだけで申請は終わり、、、、ませんでした。
なんとアメリカから本人確認の電話が掛かってきます。しかも英語です。日本語通じません。
すごく焦ったのですが、海外生活していたことを思い出し「YesYes!!」「OKOK!!」でなんとかその場をクリア。英語出来る人いるのであれば手伝ってもらったほうがいいですよ。
丁度、Appleの基調講演を見ながら申請したのですが、Jobsのプレゼンは英語があまりわからない自分でも聞き取れるのがすごい。電話を切ったとき英語の基調講演を聞きながら英語の電話をしていた自分に思わず笑ってしまいました :)

まとめ

今回はクラウドホスティングサーバーについてと、個人利用レベルからでも始められるRackspace Cloud Serversの紹介させていただきました。
次は実際のセットアップについて書いていきたいとおもいます。

MySQLを5.1にアップデート #mysql50# って何!?

少々煽り気味なタイトルで失礼します。

先日Gitの記事を書いて、自分のサーバーのGitのバージョンが古かったことが結局気になってバージョンアップをしたんですね。

たまにしかアップデートしないサーバーなのでPHPとかMySQLもアップデートしようと考えました。使っているOSはCentOS 5.5です。デフォルトで提供されているリポジトリでのMySQLの最新は5.0.x、PHPも5.1.x。

さすが最愛のCentOSさんです。ちーっす。

yumのリポジトリでそこそこ最新のPHPやMySQLを提供しているのがLes RPM de Remiというリポジトリらしいです。(Utter Ramblingsというのもある。)

では早速yumにリポジトリを追加しましょう。

$ sudo rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
$ sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

これでremiが使えるようになります。/etc/yum.conf.d/remi.repoを編集し、remiを有効化したりするのですが、今回はそうしません。一時的に有効にする方法でインストールしていきます。
実はこれからMySQLをアップグレードするのですがコンフリクトしてしまいます。一度MySQLを削除します。

$ sudo yum remove mysql

インストールします。ここで先程のremiを一時的に有効にするため –enablerepo=remi オプションをつけます。
これで無闇に最新バージョンを入れるわけではなく基本は(古臭くて)堅実なCentOSのリポジトリを使うことができます。

$ sudo yum --enablerepo=remi install mysql mysql-server

MySQLがアップグレードされました。

$ mysql --version
mysql  Ver 14.14 Distrib 5.1.50, for redhat-linux-gnu (x86_64) using readline 5.1

しかしこれで安心してはいけません。

$ mysql -u USERNAME -p
mysql > show databases;

+---------------------------------+
| Database                        |
+---------------------------------+
| information_schema              |
| #mysql50#com_nijitaro-wordpress |
| mysql                           |
+---------------------------------+
...

com_nijitaro-wordpressというnijitaro.comブログ(ほぼ使ってない)用DBがあるのですが頭に#mysql50#がついています。
MySQL5.1で有効でない文字が使われていてどうのこうのというわけでバージョンアップするとDBの頭につくことがあるようです。DBのデータも5.1用にアップデートしなくてはなりません。

mysql_updateを実行すればいいようです。

$ mysql_update -u USERNAME -p
$ mysql -u USERNAME -p
mysql> show databases;
+------------------------+
| Database               |
+------------------------+
| information_schema     |
| com_nijitaro-wordpress |
| mysql                  |
+------------------------+
...

ばっちりですね。

PHPも5.3にアップデートします。
タイトルとは関係ないのですがPHP5.3にするついでにMySQLも上げようとしてた時にはまったのでした。
こちらはremiリポジトリを使って簡単にインストールできました。

$ sudo yum --enablerepo=remi update php

これで関係するphp-mysqlなども一度にアップグレードされます。

WordPressなどのプロダクトは、比較的古いシステムでもインストールできるようになっていますが、Webサービスを構築するフレームワークなどではシステム効率、高速化、記述の簡略化などを優先してかバッサリと古いバージョンを切り捨てることもあったりします。
急いでバージョンを上げる必要はないように感じますが、攻めのWebサービスを構築する場合などはポータビリティは後回しにガンガン最新のバージョンで作っていくというのがトレンド(?)のようです。

とはいえ、ボクみたいに入り口で引っかかって悠長にブログなんか書いちゃって肝心のプログラムが全くすすまないなんてことにならないように!!

サーバーつくった。その3 – SSHでログインするよ。

サーバー作ったとはいえコピペもできない、ログも20行くらいしかみれない。文字がでかい。
いつも使ってるマウスとキーボードじゃないなどなど、使いづらいったらありゃしない。

というわけで一般的にこういうサーバーはSSHをつかって他のパソコンからログインして操作するらしいよ。

インストールのときはほとんどOFFにしてインストールしたけどSSH入ってます。 

ただ、このままSSHを利用するのは危険です。新規ユーザーを作成してrootからはログインできないようにしましょう。

//以降はコメントなので入力しない事。

ではまずCentOSにrootユーザーでログインします。

centos login: _

となっているのでrootと入力し、rootのパスワードを入力します。
パスワード入力のときにいくらキーをうっても表示されないのは仕様です。

ログインしたら早速新規ユーザーを作成しましょう。

ちなみに#から始まるのはrootユーザー権限であるという意味なので覚えておくと便利ですよ。
rootユーザーでないときは$から始まります。
(Macはrootユーザーになれない設定になっているので#とかかれていたら「sudo 」とコマンドの前に追加してその行だけ一時的にroot権限になる必要があります。)

# useradd ユーザー名

ユーザー名は任意に置き換えて下さい。ただし、小文字の英数字が無難でいいですよ。

そのまま作成したユーザーにパスワードを設定します。

# passwdユーザー名
Changing password for user ユーザー名.
New UNIX password: //ここでパスワードを入力。キーをうっても表示されないので注意。
Retype new UNIX password:  //再入力
passwd: all authentication tokens updated successfully. 

次にルートになれるユーザーを制限しましょう。
制限する前に、作成したユーザーを管理者権限のあるグループに所属させます。

# usermod -G wheel ユーザー名
//確認します。
#cat /etc/group
//wheel:x:10:root,ユーザー名と書いてあればOK。

次にwheelグループ以外のユーザーはrootになれないように設定します。

# nano /etc/pam.d/su

ここでnanoを指定しましたがviなどのエディタでも全然大丈夫です。
ただnanoの方が若干直感的に使えるので、初めての人やちょっとした設定には便利です。

#auth       required     pam_wheel.so use_uid

と書いてある行を探し先頭の#を削除して保存します。
nanoの人はCtrl+Oを押すと下のハイライトされている行にファイル名がでてくるのでそのままEnterし、Ctrl+Xを押してエディタを終了します。

これで新しいユーザーを追加し、管理者権限をあたえ、管理者権限あるユーザー以外はrootになれなくなりました。
あとはrootからSSHログインできないようにします。

# nano /etc/sshd_config
 #PermitRootLogin yes
//先頭の#を削除、yesをnoにし、rootでのSSHログインをOFFにします。
PermitRootLogin no

SSHサーバーを起動します。また起動時に起動するように設定します。

# /etc/rc.d/init.d/sshd start
# chkconfig sshd on

余談ですがsshdというのはSSH Deamonの事です。
設定できているかチェックしましょう。

# chkconfig --list sshd
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
//2~5がonになってます。

SSHから作成したユーザーでのみログインできるようになりました。

ここからはMacの作業になります。

Terminal.appを起動。

ログインしてみる。

//ユーザー名はCentOSで作成したユーザー名
//IPはインストール時に設定したIP
$ ssh ユーザー名@IP

yes/no?って聞かれる場合はyesを選択。恐らく初回接続時には聞かれます。
パスワードをきかれるので作成したユーザーのパスワードを入力します。

rootになってみる。

$ su - //ハイフン(-)を入れること

rootパスワードを入力すると先頭が$から#に変わります。

# whoami
root //現在のユーザーはrootとなります。

元のユーザーに戻りたい場合は、Ctrl+Dを押すか以下を入力

# exit

すると先頭が$になります。whoami入力で作成したユーザー名が表示されます。

パスワードでログイン不可にする(認証鍵をつかったログイン)

これは運営体制によりますが、パスワードをいちいち入力するのがめんどくさいとか、もし、パスワードが割れてしまったら危険だと思う場合はパスワードではなく認証鍵というものをつかってログインする方法があります。

認証鍵ファイルは人間では覚えきれないような長いパスワードが入ったファイルです。
ただ、認証鍵ファイルをもっていないパソコンからログインできなくなります。それくらい強力な鍵という事ですね。

Terminal.appにて以下を入力し、公開鍵を作成。

$ ssh-keygen
Enter file in which to save the key (/Users/USERNAME.ssh/id_rsa)://空のままEnter
Enter passphrase (empty for no passphrase):
//パスフレーズを入れるとさらに強固になるがログイン毎にパスフレーズが必要になる。今回は空にした。
Enter same passphrase again: //空のままEnter (パスフレーズを入れた場合は再入力)
$ cd ~/.ssh
$ scp id_rsa.pub CentOSユーザー名@IP:id_rsa

SSHログインして、認証鍵を作成する。

$ ssh ユーザー名@IP //SSHでログイン。
password: //入力してエンター
$ cd ~ //ユーザーフォルダに移動
$ ls //現在のディレクトリ内にあるファイルを表示。ここにid_rsaというファイルがある。
$ mkdir -p ~/.ssh //.sshディレクトリ作成
$ chmod 700 ~/.ssh
$ cat id_rsa >> ~/.ssh/authorized_keys2 //authorized_keys2にid_rsaの内容を追加。
$cd ~/.ssh
$ chmod 600 authorized_keys2
//authorized_keys2パーミッションを600(所有ユーザーのみ読み書き可能。)に変更。

これで認証鍵でのログインもできるようになった。

ついでにパスワードのログインを不可にすることで強固なものにする。

$ su -
# nano /etc/ssh/sshd_config
# nano /etc/ssh/sshd_config //SSHサーバー設定ファイル編集
#SyslogFacility AUTH
//以下に変更
SyslogFacility AUTHPRIV

#PermitRootLogin yes
//以下に変更
PermitRootLogin no //rootでのログインを禁止(既になっているはず)

#PasswordAuthentication yes
//以下に変更
PasswordAuthentication no //パスワード式認証 no

#PermitEmptyPasswords no
PermitEmptyPasswords no //パスワードなしログイン no

Terminal.appを再起動して今度は認証鍵でログインする。

$ ssh ユーザー名@IP

おつかれさまです。
次はWEBサーバーを入れていきます。

サーバーつくった。その2 – CentOS5を入れたよ。

組み立ては以外と簡単だった。マザーボード毎にちがうしね、ここら辺は説明書見た方が詳しいので割愛。

PCが組めたらCentOSをいれる。バージョンは5.3にしました。

CentOSの前にRed Hat Enterprise Linux (RHEL)の説明をすると、企業サーバーによく用いられる有償サポート付きのOSです。企業用ということで安心感のある固いOSってことでしょうね。 仕事でサーバーを触ることがある場合、結構な確率でこのOS。

で、CentOSはRHELのクローンOSでサポートや商用パッケージこそないものの、ほぼRHELと同じように使えるOS。バージョンもRHELと同期していて、メンテナンスも7年と長い。

せっかくサーバーセットアップするのなら仕事で使いそうなRHELに似ている環境の方がいいのでこれを選択。 

備忘録を兼ねてインストール手順を軽く触れておく。

インストールディスク作成

まずCentOS5のisoをダウンロードしてくる。

Mirrorがいっぱいあるのでどこでもいいんですがボクはrikenから取ってきたかな。
http://ftp.riken.jp/Linux/centos/5.3/isos/i386/

上のURLから「CentOS-5.3-i386-bin-DVD.iso 」を選択して、DVDに焼く。
MacBookの場合はDVDをマウントした状態で落としてきたisoをディスクユーティリティで開くと、ディスクを作成ってアイコンがあるからそれ押しておしまい。

インストール

普通に手順に沿っていけばインストール終わりなんだけれども、サーバー用途であるということと、RAID1にしたかったのでそこらへんをメモ。

DVDドライブにインストールディスクを入れて起動します。 

boot:_

でとまるのでそのままEnter。

次の画面はディスクが壊れてないかチェックするかどうか。ボクは「Skip」を選択しましたw

Nextを押していくと言語選択の画面になるので「日本語(japanese)」を選択しました。Englishでもよかったかも。

キーボードも「日本語」を選択。

次を押して行くとパーティションの設定になります。ここでストップ。RAID化したくない人は、次を読み飛ばしてOKです。

インストール – RAID化

ハードディスクが安かったのでRAIDを構築することにした。超簡単にRAIDの説明をすると、複数のハードディスクを一枚のハードディスクとして認識する技術らしいですよ。

幾つか種類があるんだけどメジャーな構成は以下の3つ。説明は適当なので興味ある人はWikipediaへ -> RAID

 

  • RAID 0 – 複数枚同時に書き込むってことを、スピードに重点をおいた構造。
  • RAID 1 – 複数枚同時に書き込むってことを、安定性に重点をおいた構造。要はバックアップしながら書き込む。
  • RAID 5 – HDDが3枚以上必要なのだが、効率よくRAID 0とRAID 1を両立する構造。ただしソフトウェア制御する場合は、CPU等を喰うかも。

 

あとはRAID 0+1だったりRAID 1+0だったりRAID 0+5だったりなんかよくわからないけど組み合わせたりもできるらしいのだが、さすがにHDD何枚いるんだよ!!って感じなので今回はRAID 1にしました。wikiみてると後半笑えてきます。

RAID化の手順を書こうと思ったんだけど、結構長いのと、絵がないと説明しずらいのでこちらを紹介。

http://centossrv.com/centos5-raid-1.shtml

ぼくもここを見てやったんですけどねw

インストール – ネットワーク設定

ネットワークデバイスのところで右側にある「編集」をクリック。

DHCPをつかうとローカルIPが起動するごとに変動するのでチェックをはずします。
グローバルIP はボクは固定IPじゃないのでDynamicDNSを使う事にします。

IPv4をチェックしてIP6vのチェックをはずす。(IPv6はよくわからない。)

もちろん起動時にアクティブにチェックをつけましょう。

下のIPv4のところに指定したいIPアドレスをいれます。
192.168.1.xxxとか192.168.3.xxxとかがほとんどだと思うんだけど、xxxのところに0~255の値をいれる。

ちなみにMacの場合は「システム環境設定」->「ネットワーク」で調べるといいかもしれない。

大体DHCPなどで自動的に割り振られちゃったりするので128とかがいいかな。0と255の真ん中。
プレフィックスは255.255.255.0 (画像参照)とします。

「OK」をおして小ウィンドウを閉じます。

あとは東京を選んでUTCにチェック。

パスワードをきめます。rootは絶対にわからないパスワードにしてください。
あとでSSHの設定をするのだけど、分かりやすいパスワードをrootに設定しているととても危険です。

次の画面でプリインストールするパッケージを指定します。

Desktop-Gnomeパッケージのチェックをはずします。というか全部チェックを外して、ラジオボックスから「今すぐカスタマイズする」を選択して次へ。

すると詳細にパッケージ指定ができる画面になります。一個一個のチェックをみていき下記に記したもの以外はすべて「オフ」にします。

  • 「開発」内の「開発ツール」
  • 「ベースシステム」内の「ベース」
  • 「言語」内の「日本語のサポート」

また、「ベース」を選択時に右下のオプションパッケージを開きます。
「firstboot-tui」 のチェックを外して「閉じる」「次へ」

そのまま次に進んでいけばインストール開始します。終わったら再起動を押して終了。

再起動するとGUIなしのターミナルのような画面になります。

おつかれさまです。次はCentOSをサーバーにしていきます。