Hyper-V上で仮想マシンを作成して、Ubuntu Server 22.04(CLI)の構築をしたのでまとめました。
やったこと
- Ubuntu Server OSインストール
- 最低限の初期設定
- 公開鍵を使ったSSH接続の設定
仮想マシンの作成
仮想マシン情報
ホスト名 | virtualMachine |
ユーザー名 | username |
OS | Ubuntu server 22.04 |
仮想マシンの作成
Hyper-Vの仮想マシンの作成は後日記事を書く予定です。
今回は仮想マシンは作成済みの前提で進めます。
Ubuntu serverをインストール
仮想マシンにUbuntuをインストールします。
UbuntuのインストールISOファイルは以下からダウンロードします。
[Ubuntu公式サイト](https://jp.ubuntu.com/download)
少し下にスクロールするとUbuntu Serverのダウンロードリンクがあります。
インストールウィザード
基本的にウィザードにそって進めていくだけです。
ダウンロードしたISOファイルを仮想マシンに読み込ませた状態で、起動します。
CLIでの操作なので、十字キーでカーソル移動、EnterまたはSpaceで確定していきます。
インストール開始
カーソルが「Try or Install Ubuntu Server」に合っている状態で始まりますので、そのままEnterを押します。(30秒放置すると勝手に進んでしまうので注意!)
言語選択
なにやらよくわからないことがダーーーーっと流れていきますので眺めます。
眺めていると急に言語選択画面が表示されますので、ご自身が得意な言語をお選びください。
私はEnglishを選択します。(英語は読めませんが、トラブルシュート時に検索しやすい)
インストーラーのバージョンアップ(無視)
インストーラーをバージョンアップするか問われます。
特にこだわりがなければバージョンアップせずに進めます。
[Continue without updating]にカーソルを合わせてEnterを押します。
キーボードレイアウト選択
キーボードのレイアウトを問われます。
言語で英語を選択しているので、デフォルトでEnglish(US)が選択されているのでそのままEnterを押します。
私はUS配列キーボードを使用しているのでこのままで問題ありませんが、JIS配列キーボードを使用されている方はキーマッピングがおかしくなるので変更した方が良いと思います。
インストールタイプ選択
インストールするUbuntuを2パターンから選ぶことができます。
- Ubuntu Server
- よく使うソフトウェアとか最初から入れてあげるよ版
- Ubuntu Server(minimized)
- 最低限のソフトウェアだけ入れておくよ版
ここは好みの問題ですが、私の場合はminimizedを選択しました。
ネットワーク設定
ネットワーク情報の設定はデフォルトでDHCP設定になっています。
通常であれば自動でIPアドレスが割り当てられますのでそのままEnterを押します。
Proxy設定
Proxyサーバーを経由する設定をしたい場合はここで指定ができます。
マニアックな設定なので、ここもそのままEnterで進みます。
Ubuntu リポジトリ設定
Ubuntuのパッケージをダウンロード元を指定できます。
ここもそのままEnterで進めます。
ストレージ設定
OSをインストールするディスクを指定します。
仮想マシンに複数ディスクをマウントしている場合はここでインストール先のディスクを指定します。
緑枠で囲っている箇所はストレージの仮想化(LVM:Logical Volume Manager)を使用するかのチェックとなります。
LVMに詳しい方、もしくはLVMの勉強をしたい方はチェックありのままで良いと思いますが、
通常利用する場合はチェックを外す方をお勧めします。
パーティション設定
ストレージのパーティション設定を行います。
デフォルトでは起動領域用のパーティションと、メインのrootパーティションの2つに分かれています。
特にこだわりがなければそのままEnterで進めます。
指定されたディスクは初期化されるけど良いか?と聞かれますので[Continue]を選択してEnterを押します。
ユーザー情報設定
Ubuntuで使用する管理者ユーザーの設定を行います。
ここで指定したユーザー名とパスワードを忘れると、ログインできなくなりますので先にメモってから入力するなど、絶対に忘れないよう気をつけてください。
your nameとusernameは一緒である必要はありません。
your nameって何に使うんだろう。。
ログインする時はusernameとパスワードが必要になります。
SSH設定
SSHを有効にするか問われます。
CLI環境での操作は基本的にSSH経由になると思いますので、チェックをつけておきましょう。
初期設定編でSSH接続の設定もしていきます。
追加機能選択
よく使われる機能を選ぶだけでインストールしてくれるようです。
私の場合は何もチェックをつけずに進めますが、目的の機能が一覧にある場合はチェックを入れましょう。
インストール開始!
やっとインストールがはじまります。
いろんな文字が、だーーーーっと流れていきますので眺めましょう。
一番下に表示されている[View full log]の下に[Reboot Now]と表示されるまで待ちます。
[Reboot Now]にカーソルが合っている状態でEnterを押して再起動します。
ログイン画面が表示されればOSのインストール完了です!お疲れ様でした。
初期設定
インストールが完了したら、最低限の設定をしていきましょう。(まだまだ続くんじゃ)
アップデート
OSにログインしたら、まずはOSのアップデートをしておきましょう。
sudo apt update | sudo apt -y upgrade
管理者権限で実行する必要があるので[sudo]をつけます。
aptはパッケージ管理コマンドで、
- updateでアップデートのあるパッケージ情報の取得
- upgradeでアップデートの適用
をしていきます。
[ -y ]はインストール前に聞かれる「インストールしますか?」の質問に自動でYesと答えてくれるオプションです。
エディタ nanoをインストール
OSをminimizedで入れたのでテキストエディタが入っていませんでした。
今回はnanoエディタをインストールします。
sudo apt install nano
タイムゾーンを設定する
インストールウィザードでタイムゾーンを聞かれなかったので、自動で設定されるのかな?と思ったらされていませんでした。
時間の設定が合っていない場合、timedatectlコマンドでタイムゾーンの設定を行います。
# 確認
timedatectl
# レスポンス
Local time: Fri 2023-02-17 14:10:59 UTC
Universal time: Fri 2023-02-17 14:10:59 UTC
RTC time: Fri 2023-02-17 14:10:59
Time zone: Etc/UTC (UTC, +0000) # ここがUTC標準時刻になってる
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
UTC標準時刻と日本では時差が9時間あるので正しいタイムゾーンに設定する必要があります。
タイムゾーンの名前を事前に確認してから設定します。
timedatectl list-timezones | grep Tokyo
#レスポンス
Asia/Tokyo
タイムゾーンを「Asia/Tokyo」にすればよいみたいなので設定していきます。
# 設定
timedatectl set-timezone Asia/Tokyo
# レスポンス
==== AUTHENTICATING FOR org.freedesktop.timedate1.set-timezone ===
Authentication is required to set the system timezone.
Authenticating as: username
Password: # ユーザのパスワードを入力する
==== AUTHENTICATION COMPLETE ===
# 確認
timedatectl
# レスポンス
Local time: Fri 2023-02-17 23:13:49 JST
Universal time: Fri 2023-02-17 14:13:49 UTC
RTC time: Fri 2023-02-17 14:13:49
Time zone: Asia/Tokyo (JST, +0900)# 設定が反映されている事を確認
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
これでOS内の時間が正しい値になりました。
ローカルPCの公開鍵と秘密鍵を生成(ローカルPC操作)
ローカルPCから作成した仮想マシンへ安全にログインするために公開鍵認証方式でSSH接続できるように設定します。
ここの操作はローカルPCでの操作となります。
私の場合、Macで行なっていますのでWindowsの方は別途調べてみてください。
Macで、Terminalを起動します。
# ローカルPCで実施
# .sshディレクトリに移動
cd ~/.ssh
# 鍵の生成
ssh-keygen -t ed25519
# レスポンス
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/makoto/.ssh/id_ed25519): virtualMachineKey # キーの名前を指定する(例だとホスト名+Keyにしています)
Enter passphrase (empty for no passphrase): # そのままEnter
Enter same passphrase again: # そのままEnter
Your identification has been saved in virtualMachineKey
Your public key has been saved in virtualMachineKey.pub
The key fingerprint is:
SHA256:... username@virtualMachine
The key's randomart image is:
+--[ED25519 256]--+
省略
+----[SHA256]-----+
作成された鍵を確認します。
.pubがついている方が公開鍵、ついていない方が秘密鍵となります。
# ローカルPCで実施
ll ~/.ssh/
# レスポンス
-rw------- 1 username username 411B 2 24 12:10 virtualMachineKey
-rw-r--r-- 1 username username 100B 2 24 12:10 virtualMachineKey.pub
仮想マシンに公開鍵を配置(ローカルPC操作)
作成した公開鍵を仮想マシンに送付します。
公開鍵を渡す方法はいくつかありますが今回はssh-copy-idコマンドで送ってみます。
アクセスしたいサーバに送るのは『公開鍵(.pub)』ですので間違えないようにしましょう。
# ローカルPCで実施
ssh-copy-id -i virtualMachineKey.pub virtualMachine
「 -i 」オプションで送付したい公開鍵を指定します。
「virtualMachine」は作成した仮想マシンのServer nameもしくはIPアドレスを指定します。
virtualMachineのログイン情報を聞かれますのでユーザーとパスワードを入力して送付を完了させます。
仮想マシンのSSHの設定
ローカルPCの公開鍵確認
ローカルPCから送付された公開鍵を確認します。
ここからの操作は仮想マシンに戻ります。
# 仮想マシンで実行
cat ~/.ssh/authorized_keys
# レスポンス
ssh-ed25519 ...省略... # ローカルPCの情報が表示されればOK
SSHのパスワード認証を禁止に設定
ローカルPCの公開鍵の登録を確認できたら、SSH接続時にパスワード認証でのログインを禁止にします。
ついでにrootアカウントでのログインも禁止します。
sshの設定変更はsshd_configを編集します。
ssh_configと間違えやすいので注意してください!sshd_configです。
sudo nano /etc/ssh/sshd_config
sshd_configの編集画面になったら、編集していきましょう!
# [追記] rootアカウントでのSSHログインを禁止
PermitRootLogin no
# [追記] パスワードを使ったSSHログインを禁止
PasswordAuthentication no
# [変更] PAM認証を無効化
# 変更前
UsePAM yes
# 変更後
UsePAM no # yes を no に変える
編集が完了したら保存します。
SSHサービスの再起動
設定ファイルを変更したのでSSHサービスを再起動します。
systemctl restart ssh
# レスポンス
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart 'ssh.service'.
Authenticating as: username
Password: # ユーザーのパスワードを入力
再起動したらSSHサービスが動作している事を確認する。
設定ファイルに間違った値があるとエラーで起動していないことがあるので必ず確認しておきましょう。
systemctl status ssh
# レスポンス
# Active:がactive (running)ならOK
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2023-02-24 13:15:51 JST; 1min 55s ago
# 省略
鍵を指定せずにSSH接続してみる(ローカルPC操作)
ローカルPCから、パスワードでログインできない事を確認します。
ssh username@virtualMachine
# レスポンス
username@virtualMachine: Permission denied (publickey).
Permission denied (publickey).が返ってくれば、公開鍵がないからダメ!と言われているのでOKです。
公開鍵を配置したのになぜログインできない?
事前にローカルPCの公開鍵を送付していたのになぜログインができないのか気になりませんでしたか?
秘密鍵と公開鍵を使ってSSH接続する場合は認証に使用する秘密鍵ファイルを指定してあげる必要があります。
鍵を指定してSSHする(ローカルPC操作)
今度は鍵を指定してログインしてみます。
「 -i 」オプションでログイン認証で使用する秘密鍵を指定します。.pubでは無い方ですね。
# -i オプションでログイン認証で使用する秘密鍵を指定可能
ssh -i ~/.ssh/virtualMachineKey virtualMachine
ここまでの設定が間違っていなければログインできます。
後続の設定をする場合は、一度ログアウトしておきましょう。
.ssh/configに仮想マシンのログイン情報を書き込む(ローカルPC操作)
仮想マシンにログインするたびに秘密鍵のパスを指定するのはめんどくさいので、
簡単にSSH接続できるように設定していきます。
cd ~/.ssh/
# .ssh/configを新規作成もしくは編集する
nano config
# [追記]
Host virtualMachine # SSHコマンドで指定する名前になる
HostName virtualMachine # 仮想マシンのIPアドレス or ホスト名
User username # ログインに使用するユーザー名
Port 22 # [任意] SSHのポートを22以外にした時は指定する
IdentifyFile ~/.ssh/virtualMachineKey # 使用する秘密鍵を指定する
configファイルを保存したらもう一度仮想マシンにアクセスしてみましょう。
今度は先ほどconfigで記述したHost名を指定します。
ssh virtualMachine
ログインできれば成功です。これでSSHログインが楽になりました。
Ubutuサーバーの最低限の設定は以上となります。
コメント