ネットワークの勉強がてらに、raspberry pi 4Bを買ってみました。
自分のUbuntuServer構築手順を備忘録としてかきます。
間違っている点や間違っている点がありましたらご指摘いただけると幸いです!
P.S.
とりあえずやってみた感が凄いので、後にsoftetherVPN構築予定です。
構築しました!
かわいいラズパイ
買ったもの
- raspberry pi 4B(RAM 4GB)
- セット
- ケース
- 5.1V 3A USB-C 電源アダプター(スイッチ付き)
- 冷却ファン
- ヒートシンク
- Transcend マイクロSDカード 32GB
TODO
・Ubuntuインストールと起動
・ユーザ設定
・公開鍵の登録
・SSH設定
前提
| 技術 | |
|---|---|
| OS | Ubuntu Server 20.10 |
| サーバ | raspberry pi 4B(RAM 4GB)(arm64) |
| クライアント | macOS Big Sur 11.2.2 |
手順
1. Ubuntuインストール
クライアント側でRaspberry Pi Imagerを使い、microSDカードに書き込みます。
書き込みが終わったら、ラズパイにmicroSDを差し込み電源をいれ起動させてください。
イメージャーのインストール(ver1.5)はこちら
イメージャーの一覧はこちら
2. 初期設定
サーバへログインします。
Ubuntuの初期設定は下記です。
初回ログイン時にパスワードを変更してください。
User: ubuntu
Password: ubuntu
2-1. ユーザ追加
ログイン後に作業ユーザを作成し、sudo権限を付与します。
当たり前ですが、以降sudoコマンドの使用が可能です。
$ sudo adduser sampleuser
$ sudo adduser sampleuser sudo
# 初期ユーザ(ubuntu)のパスワードを削除
$ sudo passwd -d ubuntu
$ sudo passwd -l ubuntu
$ sudo passwd -l root
# ubuntuユーザ削除
$ sudo userdel -r ubuntu
$ sudo rm -rf /home/ubuntu
サーバのログイン時にパスワードとしてつかったり、sudoコマンド入力時に使用するので忘れないようにしてください。
※もし忘れた方がいたら、シングルユーザモードで起動し直すかOSの再インストールをして下さい。
https://ochanjanai.net/it/301
2-2. Datetime変更
問題が発生したときに時間の確認がしづらいのでサーバの時間を設定します。
$ date
Sun Mar 7 05:07:18 UTC 2021
$ timedatectl
Local time: Sun 2021-03-07 05:07:18 UTC
Universal time: Sun 2021-03-07 05:07:18 UTC
RTC time: n/a
Time zone: Etc/UTC (UTC, +0000
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
$ timedatectl set-timezone Asia/Tokyo
$ timedatectl
Local time: Sun 2021-03-07 14:07:44 JST
Universal time: Sun 2021-03-07 05:07:44 UTC
RTC time: n/a
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
$ date
Sun Mar 7 14:07:54 JST 2021
2-3. ipアドレスの確認
あとでSSH接続するにあたって、ipが特定できれば良いです。
クライアント側からarpコマンドなどで特定しても良いですが、サーバの作業ついでにやります。
私は、IPアドレスはルータ側で固定していますので自身の環境に合わせて設定してください。
→ルータではなくラズパイ本体で固定にしました。
$ ip a
# ~省略~
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.3.xxx/24 brd 192.168.3.255 scope global dynamic eth0
# ~省略~
3. 公開鍵の設定
クライアント側で認証キーを作成し、公開鍵をサーバに登録していきます。
あまりないと思いますが、間違って秘密鍵をサーバに登録しないように注意してください。
3-1. 認証キー作成
-
-C ""でusername@hostnameをコメントアウト -
-fオプションでファイル名指定
参考:
https://dev.classmethod.jp/articles/ssh-keygen-tips/
$ cd ~/.ssh
$ ssh-keygen -t rsa -f id_rsa_sampleuser -C ""
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa_sampleuser.
Your public key has been saved in id_rsa_sampleuser.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx username@hostname.local
The key\'s randomart image is:
# ~省略~
# 復号化して結果が一致しているかチェック
$ cat id_rsa_sampleuser.pub
$ chmod 600 id_rsa_sampleuser
$ ssh-keygen -y -f id_rsa_sampleuser
3-2. 公開鍵をサーバに登録
クライアント側から公開鍵をおくります。
$ cd ~/.ssh
$ rsync -av id_rsa_sampleuser.pub sampleuser@192.168.3.xxx:~/
# サーバにSSH接続
$ ssh sampleuser@192.168.3.xxx
$ pwd
/home/sampleuser
$ ls
id_rsa_sampleuser.pub
$ mkdir .ssh
$ mv id_rsa_sampleuser.pub .ssh/authorized_keys
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
参考
4. SSH設定
4-1. 公開鍵認証
先程の公開鍵をサーバ側で認証します。
$ sudo su
[sudo] password for sampleuser: 入力
# 以下、rootユーザで作業
$ cd /etc/ssh
$ cp -p sshd_config sshd_config.bk
$ vi sshd_config
# ~省略~
41 # Expect .ssh/authorized_keys2 to be disregarded by default in future.
42 AuthorizedKeysFile .ssh/authorized_keys #公開鍵を指定
# ~省略~
57 # To disable tunneled clear text passwords, change to no here!
58 PasswordAuthentication no #yes→no:パスワード認証を許可しない
59 PubkeyAuthentication yes #追記:公開鍵認証を許可
60 RSAAuthentication yes #追記:RSA認証を許可
$ service sshd restart
# rootユーザから抜ける
$ exit
$ cd
参考
4-2. SSH接続
今度はクライアント側から接続して確認してみます。
サーバ側の接続状態を保ったままにしておくと、接続できない際に対応しやすいかもしれません。
$ ssh -i ~/.ssh/id_rsa_sampleuser sampleuser@192.168.3.xxx
Welcome to Ubuntu 20.10 (GNU/Linux 5.8.0-1006-raspi aarch64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Sun Mar 7 17:01:49 JST 2021
System load: 0.0
# ~省略~
4-3. config追記
SSH接続の際に入力するのを楽にします。
$ vi ~/.ssh/config
Host sampleRBP
HostName 192.168.3.xxx
User sampleuser
IdentityFile ~/.ssh/id_rsa_sampleuser
$ ssh sampleRBP
Welcome to Ubuntu 20.10 (GNU/Linux 5.8.0-1006-raspi aarch64)
# ~省略~
おまけ
avahi-daemonをいれてUbuntuをmDNS(multicast DNS)に対応させます。
メリットは、
特別な設定無しで、ローカルネットワーク上で稼働しているサー ビスやホストをプログラムが公開したり検出できるようにします。たとえば、 ネットワークに接続してすぐに印刷可能なプリンタや閲覧できるファイル、話すこ とができる相手が見つけられます。
本パッケージには Avahi デーモンが含まれており、ネットワーク上であなたの マシンを表示したり、他のアプリケーションが mDNS/DNS-SD レコードの発行や 解決を行なえるようにします。
引用
# ホスト名確認
$ hostname
ubuntu
# ホスト名変更
$ sudo hostnamectl set-hostname sample
$ sudo apt install avahi-daemon
$ sudo systemctl start avahi-daemon
$ sudo systemctl enable avahi-daemon
$ ssh sampleuser@sample.local -i ~/.ssh/id_rsa_sampleuser
Welcome to Ubuntu 20.10 (GNU/Linux 5.8.0-1006-raspi aarch64)
# ~省略~
さらに、.ssh/configを修正してより快適なSSHを...
$ vi ~/.ssh/config
Host sampleRBP
HostName sample.local
User sampleuser
IdentityFile ~/.ssh/id_rsa_sampleuser
参考
