内藤 裕二/ 2022年 5月 13日/ 社内勉強会

こんにちは、内藤です。
札幌でも桜が開花しました。
朝晩の気温差はあるものの、暖かくて過ごしやすい季節になってきました。

5/13(金)に16回目のトーチの会を実施しました。
受託開発プロジェクトではWebアプリケーションの開発がメインなのですが、基本的にメンバはアプリケーション層の開発のみを行っています。
開発環境はUbuntu on WSLで構築し、本番サーバもUbuntuサーバでの納品を行っています。
各メンバがサーバセットアップから行うことはほとんどないのですが、基礎教養として、せめて理屈だけは知ってほしい、ということで、勉強会を開催しました。
ボリュームが大きいので2回に分割し、今回はその前編となります。

第16回トーチの会の様子

前半はスライドを身ながら座学、後半は実際にクラウド上に作成したサーバインスタンスを設定するワークショップを実施しました。

【勉強会】

座学

前半は座学です。
スライドをベースに解説し、適宜質問を受け付けます。

  • Linuxのディストリビューション
  • ネットワークがつながるまで
    • ネットワークの縦のバケツリレー
    • ネットワークの横のバケツリレー
    • TCPとUDP通信
    • ポート番号
    • ファイアウォール
  • Secure Shell(SSH)
    • SSHとは
    • SSHのポートフォワーディング
    • SFTP
  • パッケージの管理
    • パッケージの管理
    • Aptの仕組み

各テーマは深堀りすれば本が一冊書けてしまうのですが、広く浅く知識をつけるのが目的なので、正確さよりもわかりやすさを優先しました。

ワーク:サーバを設定してみよう

ひとりに1つずつ、サーバインスタンスを生成しました。
事前に、さくらのクラウド上で、Ubuntu 20.04 LTSを標準インストールしたインスタンスを人数分作成しておきます。
以下の順で、作業を行いました。

RLoginでサーバにログイン

NorthTorchでは社内の標準SSHクライアントとしてRLoginを使用しています。
まずはRLoginを使用して、各自割り当てられたサーバにログインします。

vimのインストール

Ubuntuに標準でインストールされているviコマンドは、日本語キーボードに対応していない場合があります。
設定を変更すれば良いのですが、面倒なのでvimに入れ替えてしまいます。

パッケージ情報の最新化のため、サーバ上で下記コマンドを叩きます。

$ sudo apt update

その後、vimをインストールします。

$ sudo apt install vim

コマンド一発で依存関係まで解決して、必要なパッケージをインストールしてくれます。

SSHの設定変更

下記の作業をします。

  • WSL上で公開鍵を作成
    $ ssh-keygen -t rsa -b 4096 -C "メールアドレス"
  • WSL側からWindows側へ、作成した鍵をコピー
  • RLoginのSFTP機能を利用して、公開鍵をサーバへ転送
  • 公開鍵を設定
    $ cd ~
    $ mkdir .ssh
    $ chmod 700 .ssh
    $ cat <公開鍵ファイルパス> >> .ssh/authorized_keys
    $ chmod 600 .ssh/authorized_keys
  • SSHサーバの設定を変更
    $ sudo vi /etc/ssh/sshd_config
    - #PermitRootLogin prohibit-password
    + PermitRootLogin no
    - #PubkeyAuthentication yes
    + PubkeyAuthentication yes
    - #PasswordAuthentication yes
    + PasswordAuthentication no
    
  • SSHサーバを再起動
    $ sudo systemctl restart ssh
  • 設定を確認
    • 別の接続としてパスワード認証でログインしようとしたら、拒否される
    • 作成した秘密鍵を使用して公開鍵認証でログインできる
  • ファイアウォールの設定変更

    下記の作業をします。

    • ufwを有効化
      $ sudo ufw status
      $ sudo ufw logging on
      $ sudo ufw logging high
      $ sudo ufw default deny incoming
      $ sudo ufw default allow outgoing
      $ sudo ufw allow from <事務所のIPアドレス> to any port ssh comment "ssh from NorthTorch office"
      $ sudo ufw enable
      $ sudo ufw status numbered
    • 設定を確認
      • 別のモバイルルータに接続してRLoginでログインを試みて、接続できない
      • 事務所のWifiに接続を戻すと、接続できる

    参加メンバの感想

    • 自分は開発ではないが、やることがたくさんあって大変そうだということはわかった。
    • 今日やった部分は良い復習になった。コマンドは忘れがち。
    • 業務でサーバ立てていたので、再確認になった。細かいところは忘れるので、社内にナレッジとして書き残すのは大事だと思った。
    • 初心者なので当たり前の作業がわかって良かった。調べなくてもコマンド打てるようになったら良いと思う。

    普段はあまり意識しない部分なのですが、皆さん真剣に取り組んでくれたのが、すごくうれしかったです。
    また、社内で唯一開発メンバでない斎藤社長が、ビジネス観点から色々と質問してくれたので、幅の広い知識と議論ができたかなぁ、と思いました。

    【ランチ】

    今回のお弁当は、会社そばのオニオンチョッパーズさんでテイクアウトしました。
    テイクアウトでも持ち味のボリュームは健在で、満足度の高いお昼でした。

    お弁当

    【終わりに】

    業務が大きく、複雑になっていくほど分業化が進みます。
    他方、実際にトラブルが起きた時には、自分がさわっていない部分の知識がないと解析が進まないことも多いです。
    何も知らないよりは、浅い知識でも持っている方が、困ったときのとっかかりになるのではないかと考えています。
    少し時間は空きますが、後編ではdjangoのアプリケーションをデプロイして動かすところまで実施する予定です。
    座学で使用した資料をSlideShareに上げました!