Raspberry Pi でサーバ構築①(ssh編 公開鍵未設定)
サーバPCを売ってしまった
「外出先から自宅のPCにsshでアクセスできたらかっこいいな」なんて今まで思っていたのだが、一回できたとなると、もうそれ以上を求めなくなってしまった。
そのためにもう一台PCを管理しなければならないと考えると、少々大変だなと思えたので、「サーバ用MouseComputerよ、さらば」と潔く手放した。
また、11インチディスプレイの持ち運びに超便利なacer Aspire oneもついでに手放した。
そもそも、ノートとデスクトップ、一台づつ売って、まだ一台づつ手元にあるのがおかしいんのだろう。
それでもやっぱり、Linuxサーバがいつでもそばに居て欲しい
そう、寂しいのです。笑
Mainに据えて置いているのはWinマシンで、ノートはMacbookProなので、常にLinuxが起動しているマシンがいないことに気がついた。
もちろん、デュアルブート、トリプルブート環境なので、起動し直せばいつでも使えるのだが、そうでなく、常にアクセスできるLinuxマシンがほしい。
そうだなぁ…と考えていたとき、RPiの存在を思い出した。
と、長い前置きをさっさと終え、OSのインストールからはじめよう。
Raspbianのダウンロード
今回はややこしい設定はしない。
最速の手順で行う。
常駐サーバにするので、tmpfsや不要なログファイルをRAM化したり、高速化、軽量化のためにカーネルいじったり余計なもの削除したりしたいのだが、とりあえず今回はサーバ立ち上げを優先する。
今後アップデートしていこうじゃないか。
用意するソフトウェアはこちら。
- Raspbian
今回はJessieを使用する。
Debianはメジャーバージョン名がトイ・ストーリーのキャラなのが、なんか好き。
容量が大きい(およそ1.2GB)ため、ダウンロードには時間がかかる。
Torrentだと早いのかもしれない。 - Win32 Disk Imager
WindowsでSDカードにディスクイメージを書き込むツール。
ダウンロードしたRaspbianの.zipを解凍して、.imgファイルをこのツールで書き込む。
この辺はあまり詳細に説明せずとも、RPiに手を出した方たちならば、すぐに理解できることだろう。
用意するハードウェアはこちら。
- RPi Model B 本体(多分Model Aでも可能)
- SDカード(今回は16GBを使用)
- microUSB電源(2.0Aが推奨らしい)
- Donald & Daisyのマグカップ(可愛すぎる)
初期設定等、特にraspi-configなどは、とりあえず今回は書かずにおく。
もう既に、わかりやすく書いてくださっている方がたくさんいらっしゃるのでそちらを参照していただきたい。
sshの設定①
手順としてはこうなる。
- root(su)ユーザのパスワード設定
- 新規ユーザの作成
- piユーザの削除
ファイルの転送がまだできないので、以下の設定は後でする。
- 公開鍵の作成
- sshの公開鍵の設定
インストール直後は、sshは使える(sshdが起動している)状態になっている。
しかし、その状態では、初期ユーザに簡単にログインできてしまう。
サーバとして運用していく上でセキュリティ的に大きな穴となるので、このユーザを削除し、新たに自分でユーザを作成しておくべきだ。
RPiのインストール直後の状態では、以下のユーザ、パスワードでログインすることができる。
RPi 初期ユーザ・パスワード
login user: pi password : raspberry
Ethernetを接続して、ルータなどからRPiのIPアドレスを探れば接続することができる。
僕の場合、ウェブブラウザから192.168.0.1でルータにアクセスし、IDとパスワードを入力してログイン、接続している機器を探す、などをしてRPiにアクセスしたりしたこともある。
でも毎回それをするのは非常に面倒なので、現在はルータ側より、接続してくる機器のMACアドレスでIPアドレスを固定するよう設定している。
端末(ターミナル)には、Teratermを利用しよう。
もちろん、cygwinのopensshなど、他のツールを使ってもよし。
まずはroot(su)のパスワードを設定。
RPi rootパスワード設定
$ sudo passwd [sudo] password for pi: Enter new UNIX password:{パスワードを入力} Retype new UNIX password:{パスワードを再度入力} passwd: password updated successfully
パスワードを入力する際、入力した文字は表示されない。
続いて、新規ユーザを作成する。
RPi 新規ユーザ作成
$ sudo adduser {ユーザ名を入力} Adding user `username' ... Adding new group `username' (1004) ... Adding new user `username' (1001) with group `username' ... Creating home directory `/home/username' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for username Enter the new value, or press ENTER for the default Full Name []:{エンター} Room Number []:{エンター} Work Phone []:{エンター} Home Phone []:{エンター} Other []: Is the information correct? [Y/n] Y
新規ユーザ作成直後は、そのユーザでsudoを利用することができない。
ついでに利用できるように設定する。
一般的には以下のコマンドを実行。
RPi sudo権限追加コマンド
$ visudo
このコマンドを実行すると、root権限でnanoエディタで/etc/sudoersを開く。
僕はnanoが使えないので、viエディタで/etc/sudoersを編集した。
以下のように編集する。
RPi sudo権限追加設定ファイル 編集
... # User privilege specification root ALL=(ALL:ALL) ALL 新規ユーザ名 ALL=(ALL:ALL) ALL ...
要は、rootと同じ設定にしておけば良いということ。
この時、piユーザの設定を削除しておいた方が良いかもしれない。
ここまでできたら、一旦ログアウト。
新たにsshで接続し直し、新規に作成したユーザでログインする。
あとは、piユーザを削除するのみ。
RPi piユーザの削除
$ sudo userdel -fr pi
お遊び シリアルコンソール
ちなみに、ユーザの作成、削除だけなら、こんな楽しい方法もある。
以下のUSBシリアル変換ケーブルを使用して、シリアルコンソール!!
Amazon.co.jp: VicTsing USB to TTLシリアルケーブルチップセットPL2303HX 1.0M 6フィートArduino UNO mini 用 [並行輸入品]: パソコン・周辺機器
こういうやつだ。
試しにこの画像のものでなく、普通のUSB/D-SUB9ピンシリアル変換ケーブルのTX、RX、GNDを接続して通信してみたのだが、文字化けした。
TTLレベルというのがあるらしく、1と0を認識する電圧が全く異なるからダメだったみたいだ。
組み込み好きなのにシリアル通信の規格電圧知らないなど、無知で恥の極みだ。
しかし、ちゃんと調べて、知って一生の恥とはしない。
上の写真のように接続する。
[上記画像の引用元]
上記画像のRPiのピンアサインより、TX、RX、GND(グランド)のピンが確認できる。
RPiのTX(Transmit eXchange data)には、シリアルケーブルのRXを。
RPiのRX(Recieve eXchange data)には、シリアルケーブルのTXを。
RPiのGND(グランド)はGND同士。
シリアルケーブルの赤の線、VCCは接続しなくてよし。
とりあえず、sshもシリアルコンソールも、今回はTeratermを利用している。
ポートはそれぞれ読み替えてもらうとして、その他の設定は以下となっている。
起動ログ見てるとゾクゾクするわ。
次回は公開鍵設定に先立って、Sambaの設定をしたい。