Raspberry Pi を使ってサーバを構築しよう

はじめに

最近大学の授業やその他の行事やバイトやらで、プログラミングを教える機会がかなり増えてきました。僕自身こういったプログラミングを教えれる立場になることは、大学に入学する前にやれたらいいなと思っていたことなので、いい傾向にあります。そこで今回はそれに少しだけちなんで、あると凄く便利なサーバの構築を、サーバってなんぞやとかサーバ構築してみたいけどお金かかりそうだし敷居高そうっていう人に向けて、記事を書いて行きたいと思います。なので今回は、サーバ構築の経験がある人や高度な技術を持っている人は優しい目でみてくださると幸いです。また、今回はRaspberry Piを使ってサーバを構築していきます。理由は記事内でも書いてますが手軽に使えて手頃な価格で入手できるからと言った理由から使います。あとなんか面白そうじゃないですか。

サーバとは

まずそもそもサーバとはなんぞやっていう人もいると思います。サーバとは簡単に言うといろいろなサービスを提供するシステムです。
例としてはファイルサーバやSSHサーバやDNSサーバなど色々なものがあります。有名なものとしてはマインクラフトのゲームサーバもサーバの一種ですね。今回の記事ではSSHサーバについて取り扱っていきます。
長々と説明するより実際に作ってみたほうが理解しやすいと思うので早速サーバを構築していきましょう。

環境構築

まずはRaspberry Piをサーバとして使えるように環境を整えていきましょう。
今回紹介する例は僕の動作環境なのであくまで参考程度に環境を構築してみてください。

Raspberry Piでサーバを構築する際の大きな利点は以下の通りのことがあるかと。

  • Raspberry PiがPCに比べて安い
  • USBメモリを使うので簡単に組み立てられる
  • バイルバッテリーを使うことにより非常時の電源にもできる
  • とても小さいので場所に困らない

まあようするに手軽に使えるし必要な物も安く集められるのです。

それでは実際にOSをインストールしてSSHで接続するところまでやっていきましょう。


OSのインストールしよう

今回使用するOSはRaspbianというものです。Raspberry Piで使えるメジャーなOSだと思います。  他にもArch Linuxやwindows10Iotなどもありますがそれはお好みで使ってみてください(僕は使ったことがありません...)。 OSのインストール自体はRaspbianのサイトから入手してSDカードに書き込むだけです。

インストールの手順は以下の通りにすればできると思います。

  1. サイトからNOOBSのzipを入手 https://www.raspberrypi.org/downloads/noobs/
  2. 入手したzipフォルダを解凍しSDカードにコピーする
  3. Raspberry piにSDカードを差し込み起動する
  4. インストールするものを選択する画面になると思いますのでRaspbianを選択(この時画面下にある言語選択で自分の使いたい言語を選ぶと良い)
  5. Installを選択
  6. 本当に書き込んでいいですかと言ったことを聞かれるのではい(Yes)を選択する

これでインストールの作業は終わりです。

すごく簡単にできましたね。

それでは次にSSHを使えるように設定していきます。


SSHを有効化しよう

Raspberry PiSSH接続するにはSSHを有効化する必要があります。Ctrl+Alt+Tでターミナルを起動して以下のコマンドを入力しましょう。

$sudo raspi-config

すると設定画面のようなものが出てくると思います。
この中からAdvanced Optionsを選択してください。
次にA4のSSHを選択してください。
次の画面ではYesを選択してください。
これでRaspberry piSSHが有効になりました。

ここまできたらSSHで接続してみましょう。

実際にSSHで接続してみよう

ここまで色々環境構築をしてきましたがこれで一旦環境構築はおしまいです。ではSSHRaspberry Piサーバに接続してみましょう。SSHを使うにはMacLinuxを使っている人はTerminalで、Windowsを使っている人はTeraTermCygwinなどを使って接続します。今回はTerminal(Cygwin)を使っていきます。

OSX,Linux,Windows(Cygwin)の場合

$SSH pi@Raspberry PiのIPアドレス

とTerminalに打ち込みます。
すると英語で色々文がでてきてyesかnoで聞かれる状態になると思うのでyesを選択してください。その後パスワードを聞かれるのでraspberryと入力しましょう。
すると

pi@raspberry:~$

とでてきます。

ここでwarningが出た場合は

ssh-keygen -R Raspberry PiのIPアドレス

を打ち込んでからssh接続してみてください

これでSSHサーバの完成です。

セキュリティ問題を解決しよう

さてSSHRaspberry Piに接続できましたね。しかしこのまま使っているとユーザー名やパスワードがバレているということもありすごく危険な状態です。なので必要最低限の対策としてアカウントを新しく作りパスワードを設定してあげます。今回はローカル内で使用することを前提としているのでポートに関する設定はしません。

最初にrootユーザにパスワードを変えましょう。(rootの説明は省きます) Raspberry PiのTerminalに

$sudo passwd root

と打ち込みます。するとパスワードを聞かれますので自分が設定したいパスワードを入力しましょう。 次に新しいユーザを作っていきます。

$sudo adduser 新規ユーザー名

とTerminalに打ち込みます。何か色々聞かれる思いますので自分で確認しながら設定していってください。 これで新しいアカウントができました。

そして新規ユーザでsudoコマンドを使えるようにします。

sudo gpasswd -a 新規ユーザ名 sudo

これで新しいアカウントでsudoが使えるようになりました。

次に先ほど作った新規ユーザをpiユーザと同じグループに設定してあげます。

$groups pi

とTerminalに入力するとズラーッと色々出てくると思います。
pi: pi adm dialout ...みたいな感じに。

これがpiユーザの入っているグループです。

そして上記の:より右側にあるものをコピーしてあげます。

これを新規ユーザに追加してあげます。

コピーした文字列の区切りはスペースになってると思いますが,で区切るようにしてください。

例:pi,adm.dialout ...

$sudo usermod -G コピーした文字列 新規ユーザ名

とTerminalに入力することでグループに追加できました。

一応確認のために以下のコマンドをTerminalに入力して確認しておきます。

groups 新規ユーザ名

これでpiユーザと同じように表示されればOKです。

これで新しいアカウントでsudoが使えるようになりました。

ここで一旦rootユーザになっておきましょう。

$su

パスワードを聞かれたら先ほど決めたrootユーザのパスワードを入力しましょう。

そして最後にpiユーザを削除しておきます。

#userdel -rf pi

で削除してあげましょう

これで新しいアカウントのみがユーザとして使えるようになりました。

再起動後Raspberry Pi側で新規ユーザでログインした後に別のPCで新しいユーザにSSH接続してみます。

$ssh 新しいユーザ名@Raspberry PiのIPアドレス

接続でき、lsと打ち込んで色々フォルダがでてこればOKです。

まとめ

今回はRaspberry Piを使ってSSHサーバを構築してきました。結構簡単じゃない?ちょっと設定書くだけでサーバができるんだって思った人もいるかもしれません。ちょっとした機能のサーバは構築が簡単です。かなり内容的には薄っぺらいものになってしまいましたが少しでも誰かの役にたてばいいなと思います。これ以外にもsambaを使ったファイルサーバの構築などを行ってみるとサーバの構築がより楽しくなると思います。あとRaspbianはバージョンによって結構仕様が異なるみたい...? ぜひみなさんもサーバを構築してみましょう!