未来を変える日記

システム自主開発とトライアスロン

Ubuntuを使ってみる - 鍵認証によるログイン

 前回はインストールしたUbuntuに、別のPCからSSH接続する所まで実施しました。今回は、セキュリティ設定です。

www.masa-nakajima.com

目次

目的の確認

 前回の記事ではLinux操作スキルの獲得から以下の目的を設定しています。

  1. Linux サーバーへリモートで接続できること
  2. セキュリティの設定ができること
  3. 必要なソフトの導入、設定ができること

 1番目は前回の記事で達成。今回は2番目のセキュリティ設定となります。では、何故、必要なのでしょうか?そして何を設定すれば良いでしょうか?

必要な理由

 今は自宅ネットワーク内のPCで遊んでいるだけですので、気にする必要はありません。しかし、ゆくゆくはVPS(Virtual Private Server:仮想専用サーバー)をレンタルし、そこでアプリ開発を行います。
 自宅内ネットワークでは、ルーターが不要なアクセスを弾いてくれます(下図左)。しかし、VPS上では、そのルーター機能に相当するものを自身で設定してやる必要があるのです(下図右)。

f:id:corgi-eric:20201102204747j:plain

何を設定するか?

 環境や条件によって最適解が変わりそうですが、当方の場合は以下を設定することにしました。

  1. SSHを鍵認証方式に切り替える
  2. Rootログイン、パスワードログインを禁止する
  3. ファイヤウォールを設定し、不要なアクセスを弾く

 今回は1番目の鍵認証方式をやってゆきます。

SSHを鍵認証方式に切り替える

 前回の記事でSSH接続できるようになりましたが、パスワード認証のままですので、より安全とされる鍵認証方式に切り替えます。パスワードではなく、互いの鍵ファイル(Private Key, Public Key)を確認することで通信を成立させる方式です。

f:id:corgi-eric:20201102210404p:plain

鍵の生成

 先ずは認証に使う鍵ファイルを生成します。作業場所はクライアント側・サーバー側どちらでも可能のようですが、当方はクライアント側のSurfaceで実施することにしました。
 但し、Windowsではなく、SurfaceにUbuntuを導入し、そこで作業を行います。Windowsでもできますが、分かりやすさを優先。

f:id:corgi-eric:20201101175712p:plain
Microsoft Store Ubuntu 20.04 LTSを入手
SurfaceのUbuntu

 分かりやすい方が良い!と書きながら、上記のStore経由でインストールしたUbuntu。動きません😞 なんでも、Linux用サブシステムなるものを有効にする必要があるそうです。

docs.microsoft.com

 上の公式の手順1を実施した所、無事動いてくれました。

f:id:corgi-eric:20201101181208p:plain

鍵ファイルの生成

 それでは、SurfaceのUbuntuで鍵ファイルを生成します。次のコマンド。

$ ssh-keygen -t rsa

 暗号種類をRSAとしています。RSAとは、Rivert-Shamir-Adleman cryptosystemで、素数同士を掛け合わせた整数を素因数分解するのが困難であることを利用した方式とありました(IT用語辞典)。

ファイルの保存先、パスワード

 上のコマンドを打つと、ファイルの保存先とパスワードの設定を尋ねられます。特に理由が無ければデフォルトの保存先のまま。パスワード設定は秘密鍵に流出リスクがある場合に設定すると良さそうです。

鍵ファイルの送付

 鍵ファイルが生成できたら、サーバー側に送り込みます。UsernameはUbuntuのアカウント名、192.168.1.11はサーバーのIPアドレスです。

$ ssh-copy-id username@192.168.1.11

ログイン確認

 最後にログインの確認です。

$ ssh username@192.168.1.11

f:id:corgi-eric:20201101183828p:plain

 無事に鍵認証方式でログインできることを確認できました!
 今回はここまでとし、Rootログインの禁止、パスワードログインの禁止設定は次回の記事にて執筆いたします。