サマリー
自宅で不要になったPCがあったので、お手軽に計算や情報収集用途に自宅サーバを構築してみました。
セキュリティの知識に不安があったので、グローバルには公開せず、ローカルサーバとして稼働させています。
今回実行したのは、以下のとおりです。
- Laptop PCにUbuntuをインストール(本稿では割愛)
- スリープにならないように設定
- いつものPCからssh接続できるように設定
- FireWallの設定
1. Ubuntuのインストール
Ubuntuのインストールは手順を残していないので本稿では割愛します。
サーバーを更新したら作成します!
参考にしたのは以下
2.スリープにならないように設定
今回私はLaptopPCをサーバにするので、閉じた状態で運用したいと考えていました。
2-1.閉じた状態でスリープにならないように設定
logind.confを開きHandleLidSwitch
をignoreに設定
vi /etc/systemd/logind.conf
HandleLidSwitch=ignore
2-2.時間経過でスリープにならないように設定
99-local-settingsを開き、sleep-inactive-ac-timeout
とsleep-inactive-battery-timeout
の2つを0に設定
vi /usr/share/gdm/dconf/99-local-settings
[org / gnome / settings-daemon / plugins / power]
sleep-inactive-ac-timeout = 0
sleep-inactive-battery-timeout = 0
2-3.systemd-logindサービスを再起動
systemctl restart systemd-logind.service
3.いつものPCからssh接続できるように設定(ssh接続の設定)
ホストPCで実行する設定
いつも使用しているPC(以降、クライアントPC)からアクセスするためにsshの設定を行います。
3-1.openssh-serverのインストール
sudo apt-get install openssh-server
3-2.sshd_config.orgのバックアップを作成
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
3-3.sshd_config.orgの編集(ssh-key作成までのログイン設定)
ssh-keyを作成してしようするまでにクライアントからログインできるように設定します。
sudo vi /etc/ssh/sshd_config
Port 22
PasswordAuthentication yes
PermitRootLogin yes
クライアントPCでの設定
3-4.クライアントでssh-keyの作成とサーバへのコピー
ssh認証に使用するssh-keyを作成します。今回カギの名前はubuntu-local
としました。
以下のusernameはubuntuで設定したユーザ名です。
usernameはubuntu(ホストPC)でwhoami
と入力して出てきます。
サーバのローカルIPが不明な場合は、ホストPCでip addr show
を入力すると出力されます。
色々表示されますが、inet 192.168.0.10
のように192.168.x.x
となると思います。
cd ~/.ssh
ssh-keygen -t ed25519
scp ~/.ssh/ubuntu-local.pub username@server-ip:~/.ssh/ubuntu-local.pub
# username、server-ip、key名はご自身の環境に合わせて変更してください
# 私の環境の例は以下
# scp ~/.ssh/ubuntu-local.pub meer@192.168.0.10:~/.ssh/ubuntu-local.pub
3-5.ssh-keyの公開鍵をauthorized_keysに追加
コピーが完了したらクライアントPCからホストPCへsshで接続します。
サーバのローカルIPが不明な場合は、ホストPCでip addr show
を入力すると出力されます。
色々表示されますが、inet 192.168.0.10
のように192.168.x.x
となると思います。
ssh username@192.168.0.10
クライアントPCから接続が成功したら、先ほどコピーした公開鍵をauthorized_key
にコピーし権限の変更を行います。
cat ~/.ssh/ubuntu-local.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
3-6.ssh-keyを使用したアクセスが可能かを検証
Ctrl + D
でクラインアントPCに戻ります。
以下のコマンドを実行します。
ssh -i ~/.ssh/ubuntu-local username@server-ip
ホストPCに無事接続できればssh-key
の設定は完了です。
3-7.sshd_configの設定(ssh-keyを使用したログインのみにする)
6で設定したsshd_config
の設定をssh-keyを使用したログインのみとするように変更します。
sudo vi /etc/ssh/sshd_config
PasswordAuthentication no
PermitRootLogin no
設定が完了したらssh-serverを再起動してssh接続の設定は完了です。
sudo systemctl restart sshd
4.Firewallの設定
4-1.ufwのダウンロードと有効化
Firewallを設定するためufw
をダウンロードします。
sudo apt-get install ufw
4-2.ポート番号を指定してIP制限をかける
今回はクライアントPCのローカルIPを192.168.0.2
に設定しました。
この設定はお使いのWiFiルータのコンソールなどから可能だと思います。
sudo ufw allow from 192.168.0.2 to any port 22
4-3. ufwを有効化
sudo ufw enable
4-4. ufwの設定を確認
ちゃんと設定されているかを確認します。
sudo ufw status verbose
私の環境では以下のように表示されました。
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
22 ALLOW IN 192.168.0.2
以上で、ローカル環境のubuntuサーバーの構築が完了になります。
ローカルからssh接続できるのみの設定にしているので、バッチ処理などにお使いいただけるとおもいます!
私は毎日情報収集したい項目をこちらで構築したサーバーで取得しています。
バッチサーバーの構築編
webサーバの構築編
を今後作成しようと思いますので、ぜひよろしくお願いいたします!!