ワイのメモ帳なんやで...

主にWebプログラミングのお話をします。

Raspbian on RaspberryPiのヘッドレス環境構築

よくあるやつですが、だらだらと備忘録です。
自宅サーバとして眠っていたRaspberryPiを運用すべく、環境構築しました。
ラズパイに使うキーボードも無ければモニタもありません。
f:id:duriagarthan:20181128111750j:plain

前提条件

macOS Mojave
RaspberryPi Model B
イーサネットケーブルをモデムに直挿し
Download Raspbian for Raspberry Pi(RASPBIAN STRETCH LITEを選択)

 

手順

microSD準備
いろいろ接続&電源投入
初期設定
 

microSD準備

私は4GBのmicroSDを準備しました。
ddコマンドでも良いのですが、怖いので以下のソフトを導入して行います。

balenaEtcher - Home

sshd自動起動するように設定

touch /Volumes/boot/ssh

 

いろいろ接続&電源投入

microSDを本体に挿します。

イーサネットケーブルをモデムとラズパイに接続し、
最後に、usb-bケーブルを接続し、電源が自動で入ります。
 

初期設定

ssh pi@raspberrypi.local

passwordは `raspberry` でログイン。

ロケール文字コードを変更
sudo raspi-config

「Localization」を選択,ja-JP.UTF-8やAsia/Tokyoを設定

更新作業
sudo rpi-update
sudo apt update
sudo apt upgrade
# neovimかvimが入るとやりやすいかも
sudo apt install vim
sudo reboot
ユーザ作成、sudo権限付与&公開鍵認証、sshポート変更

とりあえず、思いつく限りssh周りを硬くする
sudoできるユーザを新たに作成、そいつをデフォルトユーザにします。
公開鍵あるからパスワード設定しなくてええやろ!と思っていたが、パスワードも聞かれた。。。

sudo hostname orehost
sudo adduser oreuser
sudo usermod -G pi,adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,netdev,input,spi,gpio oreuser
sudo vi /etc/ssh/sshd_config

# SSHポート番号
Port 44422
PermitRootLogin no

ホストから新しいユーザでログインを確認する

sudo /etc/init.d/ssh restart
ssh -p 44422 oreuser@orehost.local

できたら、~/.ssh/configに記載

Host rasp
  HostName orehost.local
  User oreuser
  Port 44422
  ServerAliveInterval 30

ホストで鍵ペアを作成し、SCPで転送する

# 対話シェルは適宜答える
ssh-keygen -b 4096 -t rsa
chmod 600 ~/.ssh/id_rsa
scp ~/.ssh/id_rsa.pub rasp:~/id_rsa.pub

sudo vi /etc/ssh/sshd_config

# ルートログイン変更
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no

sudo /etc/init.d/ssh restart

# ホストからログイン
ssh rasp
mkdir .ssh
mv ~/id_rsa.pub ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
piをログインできないように設定

ec2-userとか元々のユーザって危険
公開鍵を要求するようにしたので、実はもうログインできなくなってる

sudo userdel -r pi
sudo vi /etc/systemd/system/autologin@.service 
#↓ piをoreuserに変更
ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM

# 再起動
sudo reboot
rootにパスワード設定&直ログイン制限

rootログインできないのに、このパスワードって何に使うんだ?

sudo passwd root
WANにポートフォワーディング

ここは、我が家ではモデムの設定となります。
テザリング経由で接続を確認して終了。

雑記: ラズパイを移動させたい時

普通にシャットダウンコマンドから、しばらくして電源抜けば無事に行けました。

雑感

これで、最低限使えるサーバになったのではないでしょうか。
f:id:duriagarthan:20181128111531j:plain