LoginSignup
4
8

More than 1 year has passed since last update.

2台のパソコンでサーバーごっこ

Last updated at Posted at 2020-07-05

モチベーション

パソコンとサーバーの違いは主にスペックや使用用途で、境界は思ったより曖昧です。実際、手元にあるパソコンを、まるでネットワーク上にあるサーバーのように使うことが可能です。そこで、自宅にある2台のパソコンを使って、一方から他方へSSH接続し、リモートサーバー作業をシミュレートしてみます。

用意するもの・前提

  • 接続元PC: SSHが使えるもの。OSは任意。
  • 接続先PC: Ubuntu or MacBook. 他のLinux ディストリビューションではコマンドが異なる部分がある。Windowsの場合は設定が異なるようなので割愛。
  • 両PCが同一のネットワークにつながっていること

接続先PCのIPを確認

Ubuntu の場合

# server ubuntu
$ ip a
...
inet 192.168.X.Y/24 ...
...

MacBook の場合

# server macbook
$ ifconfig
...
inet 192.168.X.Y netmask 0xffffff00 ...
...

上記コマンドで、接続しているネットワークのプライベートIPが表示される。通常は 192.168.X.Y という形式で、X, Y は0~255の数字。

IP アドレスについて

IPアドレスは 32ビットの数字で、それを8ビットずつに区切り数字で表すとよく目にするIPアドレスになる。8ビットは0~255の数字を表すので、この範囲の数字4つでIPアドレスになる

/24 が付いている場合、それはIPアドレスの初めの24ビットがグループ内で固定されていることを意味する。つまり、最初の3つの数字は固定されていて、最後の数字が異なる。
netmask 0xffffff00 は同じことを表現している。つまり、固定されているビットを1、可変部分を0となるように16進数で書くとこうなる。

プライベートアドレスが通常 192.168 から始まる理由はよく分からなかった。

サーバー側でSSHサービスを開始

初期状態では、外部からSSH接続はできない設定になっています。それを pingで確認してみます。

# 接続元
$ ping 192.168.X.Y
Request timeout for icmp_seq 0
...

X, Y には先ほど確認した値を入れます。この結果は、IPへアクセスできないことを意味しています。

そこで、接続先でSSHサービスを開始してみます。

Ubuntu の場合

# 接続先 Ubuntu
$ sudo apt-get install -y openssh-server

openssh-server をインストールすると、SSHサービスが自動で起動します。下記のコマンドで確認できます。

# 接続先 Ubuntu
$ sudo systemctl status ssh
...
Active: active (running)
...

なお、次回以降PCを起動すると自動でSSHサービスが起動するようになります。
自動起動をやめたい場合は、次のような方法があるようです(参考)。

  1. 下記のコマンドで ssh.conf ファイルの名前を変える(自動起動させるには名前を元に戻す)

    $ sudo mv /etc/init/ssh.conf /etc/init/ssh.conf.disabled
    
  2. /etc/init/ssh.conf 内の自動起動に関わる部分をコメントアウトする

...
#start on filesystem or runlevel [2345] 
...

MacBook の場合

System Preferences > Sharing において、"Remote Login" を選択し、アクセス可能なユーザーを選択(参考)。
下図のような画面。丁寧に、SSHコマンドを教えてくれる。
Sharing.png

ここで、もう一度 ping をしてみます。

$ ping 192.168.X.Y
64 bytes from 192.168.10.224: icmp_seq=0 ttl=64 time=108.883 ms
...

うまくいっていれば、IPへのアクセスが確認できます。

SSHで接続する

接続方法は、通常のサーバーと同じです。

#接続元
$ ssh <user>@192.168.X.Y

普通のPCはパスワードログインになっているので、この後パスワードを聞かれることが多いと思います。接続先で通常使っているログインパスワードを入力すると、接続できるはずです。

ファイアウォールを設定する

単にSSHサービスを始めた段階だと不正アクセスに対する防御はパスワードのみです。接続先にファイアウォールを設定することで、アクセス方法に制限をかけます。

Ubuntu の場合

ファイアウォールの現状確認を確認します。

$ sudo ufw status
Status: inactive

inactive はファイアウォールが設定していないことを意味します。

まず、原則アクセス禁止し、SSHのみを許可することにします。

$ sudo ufw default deny
$ sudo ufw allow ssh
$ sudo ufw enable

これで、SSH(22番ポート)以外へのアクセスが禁止されます。次のコマンドで確認できます。

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere      
22/tcp (v6)                ALLOW       Anywhere (v6)

もう少しセキュアにするには、接続元を同一ネットワークセグメントに限定することが可能です。

$ sudo ufw reset
$ sudo ufw default deny
$ sudo ufw allow from 192.168.X.0/24 to any port ssh
$ sudo ufw enable

X は、確認したIPアドレスの数字で置き換えます。/24 により、このIPの最初の24ビット(3つの数字)がマッチしているネットワークからしかアクセスできなくなります。

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       192.168.10.0/24

MacBook の場合

System Preferences > Security & Privacy の "Firewall" タブから設定が可能です。SSHアクセスを許している場合、自動でSSHポートだけはアクセスできるように設定されるようです。
Screen Shot 2020-07-05 at 14.23.55.png

4
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
8