自宅サーバの機器に直接ログインして操作することも可能なのですが、普段使用しているパソコンからリモート接続を行い、サーバを操作します。
また、ネットワーク設定行い、IPアドレスを固定に設定したいと思います。
リモート接続の設定
リモート接続の設定を行います。
自宅サーバにSSHサーバがインストールされている場合、SSHによるリモート接続が可能です。
IPアドレスの確認
まず、自宅サーバのネットワークインターフェイスのIPアドレスを確認します。
自宅サーバに直接ログインし、下記コマンドで確認します。
ip a
私の環境では下記の状態になります。
root@share:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 5c:85:7e:4a:a8:54 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.17/24 brd 192.168.0.255 scope global dynamic enp1s0
valid_lft 64586sec preferred_lft 64586sec
inet6 240d:1a:c3f:a00:5e85:7eff:fe4a:a854/64 scope global dynamic mngtmpaddr
valid_lft 48509sec preferred_lft 48509sec
inet6 fe80::5e85:7eff:fe4a:a854/64 scope link
valid_lft forever preferred_lft forever
3: enp2s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 5c:85:7e:4a:a8:55 brd ff:ff:ff:ff:ff:ff
enp1s0
というインターフェイスに 192.168.0.17
というIPアドレスが割り当てられています。
このIPアドレス宛てにSSHでリモート接続可能です。
ターミナル
普段使用しているパソコンからターミナルを使用し、リモート接続を行います。
WindowsではコマンドプロンプトでSSH接続可能ですが、そのままだと使いづらいのでWSL2+Windows Terminalでの環境で操作します。
maxOSではiTerm2を使用しましょう。
SSH接続
リモート接続では root ユーザには直接ログインできない設定になっています。
設定したユーザ名を使用し、ユーザ名@IPアドレス
で接続します。
ssh horatjp@192.168.0.17
パスワードの入力が求められ、正しく入力できれば接続できます。
リモート接続ができるようになれば、自宅サーバの機器にはディスプレイ・キーボードをつながなくとも大丈夫です。
直接自宅サーバを操作したいときにだけ、つなぐとよいでしょう。
再起動やシャットダウンの操作もリモートから行えます。
操作は root ユーザのみ行えます。
以下のコマンドで root でログインできます。
su -
root のパスワードの入力が求められます。
以下が再起動・シャットダウンのコマンドです。
# 再起動
reboot
# シャットダウン
shutdown -h now
ネットワーク設定
現在、IPアドレスは家庭内のルータのDHCPの機能で自動に割り当てられている状態になると思います。
再起動などのタイミングで自宅サーバのIPアドレスが、変更される可能性があります。
変更された場合、リモートからはどのIPアドレスに接続していいかわからなくなります。
そのため、IPアドレスが変わらないようにIPアドレスを固定に設定します。
割り当て可能なIPアドレス
割り当てできるIPアドレスは家庭内のルータの設定により異なります。
下記が一般的によく使われるネットワークの範囲です。
10.0.0.0/24
192.168.0.0/24
192.168.1.0/24
192.168.1.0/24 となっている場合、192.168.1.0 から 192.168.1.255 までがIPアドレスの範囲になります。
192.168.1.0 はネットワークアドレスになり、192.168.1.255 はブロードキャストアドレスになるので、それ以外の254個のIPアドレスが割り当て可能です。
ただし、1つはルータに割り当てられるので実質253個になります。
一般的にルータには一番初めのIPアドレス 192.168.1.1 が割り当てられることが多いと思います。
ですので、192.168.1.2 から 192.168.1.254 のIPアドレスが使用可能です。
ただ、ご自身のパソコンや携帯電話・ネットワーク機器など、すでに使用済みになっているIPアドレスがあるので、それとはかぶらないよう設定する必要があります。
192.168.1.0/24 の場合であれば、192.168.1.100 以上を設定するとかぶる可能性が低いと思います。
固定のIPアドレスの設定
まず、接続してrootになります。
DHCPの設定をコメントアウトにして、固定のIPアドレスを設定します。
vi /etc/network/interfaces
# The primary network interface
allow-hotplug enp1s0
#iface enp1s0f1 inet dhcp
# This is an autoconfigured IPv6 interface
#iface enp1s0f1 inet6 auto
iface enp1s0 inet static
address 192.168.0.101
netmask 255.255.255.0
gateway 192.168.0.1
インターフェイスを再起動します。
ifdown enp1s0;ifup enp1s0
このコマンドでIPアドレスが変更されるので、リモート接続の場合は接続が切れます。
接続が切れた場合は、また接続しなおしてください。
リモート接続ではなく、直接操作している場合は大丈夫です。
設定したIPアドレスで接続できるか確認します。
ssh horatjp@192.168.0.101
もし接続できなければ、自宅サーバを直接操作して内容を確かめてください。
SSH公開鍵認証
現在、SSHサーバへログインする場合は、パスワード認証でログインしています。
公開鍵認証にすることにより、パスワードの入力なしでログインできるようになります。
公開鍵・秘密鍵の作成
まず、クライアント(普段使用しているパソコン)側で公開鍵・秘密鍵を作成します。
SSH接続に必要な情報を保存するディレクトリを作成します。
mkdir -m 700 ~/.ssh
公開鍵・秘密鍵を作成します。
ssh-keygen -t rsa -b 4096 -C "" -f ~/.ssh/id_rsa -N ""
id_rsa
と id_rsa.pub
のファイルが作成されます。
id_rsa.pub
の pub は public でこちらが公開鍵になります。
id_rsa
が秘密鍵です。
公開鍵の登録
公開鍵を自宅サーバに登録します。
ssh-copy-id -i ~/.ssh/id_rsa.pub horatjp@192.168.0.101
公開鍵認証
公開鍵をサーバに登録したことにより、クライアントの秘密鍵を使って、パスワードなしでログインできるようになります。
ssh -i ~/.ssh/id_rsa horatjp@192.168.0.101
SSH接続設定
SSHの接続情報の設定を ~/.ssh/config
に設定できます。
設定することにより、より簡単に接続できるようになります。
クライアント側で設定します。
設定ファイル作成
touch ~/.ssh/config
設定ファイル編集
vi ~/.ssh/config
Host share
Hostname 192.168.0.101
User horatjp
Port 22
IdentityFile ~/.ssh/id_rsa
Host に設定した名前でサーバにログインできます。
ssh share
SSHサーバの設定
自宅サーバでは設定しなくともいいのですが、公開鍵認証で接続できるようにした場合、SSHサーバの設定をパスワードでログインができないようにする設定を行うことがあります。
こちら設定方法を書いておきますので参考にしてください。
root で設定を行います。
# PermitRootLogin
sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
# PubkeyAuthentication
sed -i 's/^#\?PubkeyAuthentication.*/PubkeyAuthentication yes/' /etc/ssh/sshd_config
# PasswordAuthentication
sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
service ssh restart
service ssh status
SSHサーバ側の話なので、リモート接続ではパスワードでログインできなくなりますが、機器から直接ログインする場合はパスワードでログインします。
おわりに
リモート接続の設定、ネットワーク設定、SSH公開鍵認証など、自宅サーバの運用に必要な手順を詳しく解説しました。
これらの手順にしたがって、自分だけの自宅サーバを構築して、便利に活用してください。
コメント