◇はじめに
前回からの続きになります。
前回の記事では、ミニPCにProxmox VEのインストールから初期設定までを行いました。
本記事では、次のステップとして、Proxmox VE上にVM(Ubuntu Server)のインストール、ssh接続確認までを行っています。
Proxmoxでは仮想化の方法として、仮想マシン(VM)とコンテナ(LXC)の2種類が選択できます。
両者の違いについては、公式サイトの説明や参考サイトをみてもらえればと思いますが、今回は仮想マシン(VM)を使用しています。
◇開発環境等
- 使用デバイス
- Intel NUC
- CPU:Intel Core i7-5557U
- RAM:16G
- Intel NUC
- 使用ソフト
- TeraTerm 5.2
- Visual Studio Code 1.87.2
- 仮想化環境
- Proxmox VE 8.1
- 導入VM:
- Ubuntu Server 22.04.4
仮想マシンについては、Ubuntu ServerのLTS版であるUbuntu Server 22.04.4を選択しました。
ちなみに、Ubuntu22.04とUbuntu22.04.4のisoイメージどちらもダウンロード可能なため、どちらを使えばいいかで少し悩みましたが、以下のサイトを参考にして、今回はUbuntu22.04.4を使うことにしました。
◇導入手順
進める上で、以下の2つのサイトを参考にさせていただきました。
ISOイメージのダウンロード
まず、今回インストールしたいUbuntu Server 22.04.4のISOイメージを準備します。
方法としては、
- ISOイメージをローカルに一旦ダウンロード後にProxmoxにアップロードする
- Proxmox上でISOイメージのダウンロードURLを指定し、直接ダウンロードする
という2種類の方法がありますが、今回は2の方法で進めていきます。
ダウンロードURLの確認
Ubuntuの公式サイトにいき、Ubuntu Serverをダウンロードするページに進みます。
このページでDOWNLOADボタンをクリックします。
なお、もし自動的にダウンロードが始まってしまった場合は一旦キャンセルします。
download now
のリンクにマウスを合わせた状態で右クリックして、「リンクのコピー」を選択します。
ダウンロードURL、チェックサムの入力
次に、Proxmox VEの管理メニュー上から、「local(proxmox)」-「ISOイメージ」-「URLからダウンロード」の順にクリックします。
URLを入力する画面が表示されるため、先ほどコピーしたURLを貼り付けし、「クエリURL」をクリックします。
しばらくすると、ファイル名やファイルサイズなどが表示されるため、問題ないかを確認します。
今回はダウンロード時のチェックサム検証を行っています。
先ほどのURL入力画面の右下にある「詳細設定」チェックボックスをオンにすると、入力項目が増えますので、ハッシュアルゴリズムにSHA-256
、「証明書を検証」チェックボックスを有効にします。
チェックサムについては、先ほどのサイト上にあるverify your download
リンクをクリックすると、チェックサムが表示されますので、この値を入力します。
ダウンロードするISOイメージによって、チェックサムは異なります。
ここまで入力が完了したら、「ダウンロード」ボタンをクリックして、しばらく(数分程度)待ちます。
ダウンロード及びチェックサムの検証が完了すると、TASK OK
という文が出力されますので、右上の❌ボタンで画面を閉じます。
ISOイメージの一覧にダウンロードしたISOファイル名が表示されていれば問題なく、ダウンロードできています。
なお、チェックサムの検証が合っていない場合、TASK ERROR: checksum mismatch
といったエラーが表示されます(試しにやってみました)。
Ubuntu Server仮想マシンの作成
管理メニュー右上にある「VMを作成」ボタンをクリックします。
すると、仮想マシンを作成する際に必要な項目を設定するポップアップ画面が表示されるため、順次入力していきます。
[全般]
仮想マシンの「名前」等を入力します。
「名前」以外は初期値のままでも問題ありません。
自分で後で見てわかりやすい名前を設定します。
[OS]
インストールするOSのイメージを選択します。
今回は、すでにISOイメージをダウンロード済みのため、そのイメージを選択します。
ストレージは「local」のまま「ISOイメージ」から先ほどダウンロードしたイメージを選択します。
ゲストOSの項は初期設定のまま進めます。
[システム]
システム構成に関する各種設定をする箇所になりますが、今回はすべて初期設定のままにしています。
なお、Windowsマシンを作成する場合やPCIeパススルーを行いたい場合は設定をいじる必要がありそうですので、必要に応じて変更してください。
[ディスク]
VMのディスクサイズ等を設定します。
今回は、初期設定のまま32G
としています。
[CPU]
ソケット数やコア数を設定します。デフォルトは1ソケット1コアとなっていますが、以下の公式ページを参考にして合計コア数を2に変更しています。
[メモリ]
VMの使用メモリを設定します。初期値は2048MB
ですが、今回は4096MB
に設定しています。
[ネットワーク]
ネットワークの設定についても、今回は初期設定のままにしています。
公式のドキュメントでは、「モデル」の項目はIntel E1000
がデフォルトとなっていましたが、自分の設定ではVirtIO
が初期設定となっていたため、そちらを採用しています。
[確認]
最後に、設定した内容を確認し、問題なければ「完了」ボタンをクリックします。
Ubuntu Serverのインストール
ここまで作業が終わると、Proxmox VEの管理メニュー上に先ほど作成したVMが表示されるはずです。
次に、右上の「開始」ボタンを押して、VMのインストールを行っていきます。
「コンソール」をクリックします。このとき、右上の「コンソール」をクリックした場合は新規ウィンドウでコンソール表示、左側の「コンソール」をクリックした場合は同一ウィンドウ内でコンソール表示となります。
言語・地域設定
コンソール画面を開いてしばらくすると、各種設定画面に移ります。
最初に、言語を選択する画面が表示されますが、日本語の設定が見当たらなかったため、とりあえずEnglish
を選択します。
キーボードレイアウト設定
キーボードレイアウトは、日本語キーボードの設定にします。
インストールタイプ選択
インストールするUbuntu Serverのタイプを選択します。
今回は、minimized版ではなく、通常版を選択しています。
third-party driversの項目も初期設定のままオフとしています。
ネットワーク設定(固定IP)
IPアドレスの設定に関しては、今回は固定IPを設定しています。
DHCPでの自動割り当てで問題ない場合は以下の設定は行わず、次に進んで問題ありません。
Edit IPv4
を選択後、Manual
を選択します。
SubnetやAddressなど必要事項を入力していきます。
Subnet
の設定は、サブネットを入力する必要があります。
Windowsのネットワーク設定と同じようにサブネットマスクを設定すると以下のようなエラーが出ますので注意してください。
(自分はここでハマりました・・・)
※下の画面では、仮のIPアドレスを設定しています。
正しく入力すると、エラー表示が消えます。
プロキシ設定
プロキシの設定をしたい場合はここで設定します。
必要なければそのまま次に進みます。
ミラーサーバアドレスの設定
こちらも特に希望なければ初期設定のまま次に進みます。
自分の環境では、初期設定のミラーサーバだとインストール途中にエラーが発生してしまいました。
まずは初期設定で試してみて同様の問題が発生する場合は以下の項を試してみてください。
ストレージ設定
ストレージの設定についても初期設定のままとしています。
ディスクの選択では、先ほど割り当てた32GB
のディスクが選択可能なので、それを選びます。
ストレージ設定の確認画面が表示されるので、問題なければそのままDone
を選択します。
なお、初期設定では、ディスクサイズのすべてを使用せず、一定量をfree space
として確保しています。
最初からすべてのディスクをルートディレクトリに割り当てたい場合、ubuntu-lv
のSIZEを最大までに変更します。
Done
選択後、確認画面が表示されるので、Continue
を選択します。
ユーザー名・パスワード設定
作成したVMにログインするためのユーザー名とパスワードを設定します。
Ubnutu Proへのアップグレード設定
特に希望が無ければ、初期設定のままSkip for now
を選択。
OpenSSHのインストール
SSH接続を行うためのOpenSSHのインストールを行うかを選択します。
今回は、後程SSH接続を行うため、チェックをオンにします。
インストールしたいパッケージの選択
最初に一緒にインストールしたいパッケージがある場合はSpace
キーを押してチェックボックスをオンにします。
今回は、とりあえずチェックはしません。
インストール
ここまでくると、Ubuntuのインストールが始まりますので、しばらく待ちます。
インストールが完了すると、「Reboot Now」を選んで、再起動します。
再起動すると、インストールメディアを抜いてくださいといった旨がCLI上に出力されるますので、Proxmox VEの管理メニューを操作します。
CD/DVDドライブの削除
物理マシン上でのインストールの場合は、インストールメディアを抜き取ればOKですが、今回はProxmox VE上の仮想マシンとなるため、仮想マシン上での対応が必要になります。
まず、今回起動したVMの「ハードウェア」を選択し、ISOイメージを割り当てている「CD/DVDドライブ」を選択します。
その状態で「削除」ボタンをクリックすれば完了です。
※最初はデタッチ的な操作項目を探しましたが、見当たらなかったため削除で対応しました
起動・ログイン
改めて、コンソール画面を立ち上げてしばらくするとログインユーザー名・パスワードを入力できる状態になる(場合によってはEnterキーを押す必要があるかも)ため、先ほど設定したユーザー名とパスワードを入力します。
SERVER_NAME login:
password:
ログイン成功すればコマンド入力が可能になります。
ここまででくれば、Ubuntuのインストールは完了です。
◇SSH接続(パスワード認証)の確認
今回はインストール時にOpenSSHをインストールしているため、別端末からのSSH接続が可能になっています。
今後の作業でSSH接続することが多いため、問題なく接続できるかを確認します。
なお、とりあえずはパスワード認証での接続を試します。
TeraTermから
まずはTeraTermを使ってSSH接続してみます。
使ったバージョンはTeraTerm 5.2
です。
ttermpro.exe
を起動して、接続先を以下のように指定します。
「Host」には今回作成した仮想マシンのIPアドレスを設定します。
ポート番号も現時点ではまだ変更していないため、初期設定の22番ポートで大丈夫です。
「OK」ボタンを押すと以下の警告画面が表示されます。
この警告画面は、今回接続するホストがTeraTerm側で持っている既知の接続先リストに含まれていないため、確認を促すものになります。
接続先側がなりすましている可能性もあるため、フィンガープリントを確認して問題なければ「Continue」で接続していきます。
いつもであれば、なにも考えずに「Continue」をクリックして次に進んでいるところですが、せっかくなのでちゃんとフィンガープリントを確認してみたいと思います。
フィンガープリントの確認
Skipしても可
先ほどの画像内に、ECDSA 256
とSHA256
という記載があるのがわかります。
そのため、今回は接続先ホストのECDSA方式の公開鍵をSHA256アルゴリズムでハッシュ化したフィンガープリントとの整合性を確認すればよいと考えられます。
なお、フィンガープリントを出力するには、ssh-keygen -lf FILE_NAME
というコマンドを使用します。
(こちらのサイトを参考にさせていただきました)
次に、Proxmox VEの管理メニューから起動したコンソール上から上記のコマンドを入力します。
なお、公開鍵は/etc/ssh/
内に置いてあったため、そちらに合わせて以下のコマンドを実行します。
ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
256 SHA256:4Nt*******************************+ntGsw
一部しか表示していませんが、実際には先ほどのTeraTerm上に表示されたフィンガープリントと一致していることが確認できました。
ログイン
TeraTermに戻って先ほどの警告画面で「Continue」をクリックすると、ログイン画面が表示されます。
Ubuntuのユーザー名とパスワードを入力して「OK」をクリックします。
Welcome to Ubuntu 22.04.4 LTS ~~~
といった文章が出力されればSSH接続完了です。
Visual Studio Codeから
次に、Visual Studio Code(通称VS Code)からもSSH接続を試してみました。
ここでは、VS Codeに加えて、「Remote - SSH」という拡張機能を使用します。
「Remote - SSH」をインストールした状態でVS Code左側アイコン内の「リモートエクスプローラー」を選択します。
次に、SSHの構成ファイルを開きます(⚙️
ボタンではなく、+
ボタンで直接接続してもOKです)。
ホストを追加するSSH構成ファイルを選択します。
構成ファイル上に追加したいホストの情報を追加します。
構成ファイルを保存して、再度「リモートエクスプローラー」を表示すると、追加したリモート接続先が見えるようになるので、接続ボタンを押します(現在のウィンドウと新しいウィンドウどちらでも可)。
OSのタイプの選択画面が出るため、Linux
を選択します。
次に、TeraTermと同様フィンガープリントの確認画面が表示されます(タイムアウト設定があり、画面キャプチャは取れず)。
ここで注意点ですが、先ほどとフィンガープリントが異なっています。
ホストの各公開鍵を確認したところ、ECDSAではなく、ED25519の公開鍵のフィンガープリントを表示しているようでした(なぜこの公開鍵が使われるかについての参考情報は見つけられませんでした)。
先ほどと同様の方法で指定するファイル名のみ変更してコマンドを実行します。
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:*******************************
フィンガープリントの確認でOKを選択すると、パスワード入力画面が表示されるので、先ほど同様Ubuntuのパスワードを入力します。
これで一通り完了ですが、初めてのSSH接続の場合、複数回パスワード入力を求められることがあるので、その都度入力します。
ターミナル画面を表示し、各種コマンドが入力できる状態になればSSH接続完了です。
◇ハマったポイント
インストール時にエラー発生
今回自分の環境では、Ubuntuのインストールのタイミングでエラーが発生し、中止される問題が複数回発生しました。
エラー発生時の画面キャプチャは取り忘れたのですが、ログを追ってみたかぎりでは、インストール時にアクセスするミラーサーバに対して、
- ミラーサーバの名前解決に失敗
- ミラーサーバからのレスポンスがタイムアウト
と思われるエラーログが出力されていたため、以下の対策を試しました。
<対策①DNS設定の変更➡️改善せず❌>
名前解決が失敗している部分があったため、最初はDNSの設定を疑いました。
そこで、ネットワーク設定の画面でDNSの設定(Name serversの項目)を変えてみました(8.8.8.8
や1.1.1.1
なども試してみた)が、改善しませんでした。
<対策②ミラーサーバの変更➡️改善した⭕>
DNSサーバの変更で改善しなかったため、次にミラーサーバの変更を試しました。
初期設定ではjp.archive.ubuntu.com
のURLが設定されていたため、まずはjpを抜いたarchive.ubuntu.com
をミラーサーバとしてインストール作業を行いましたが、同様のエラーが発生しました。
次に、以下のミラーサイト一覧内のJapanのミラーサイトを試しました。
とりあえず一番上の「ICSCoE(Industrial Cyber Security Center of Excellence)」のftp.udx.icscoe.jp
をミラーサーバに設定して再度インストール作業を行ったところ、今回は無事インストール作業が完了しました。
初期設定のミラーサーバでインストールが失敗する原因は未解決のままですが、同様のエラーが発生した場合は参考にしてもらえればと思います。
◇おわりに
当初の予定では、SSH接続の公開鍵認証の設定まで記事にする予定でしたが、ボリュームが多くなったため、パスワード認証でのSSH接続確認までの記事としてまとめました。
他の設定などは余裕のあるタイミングで別記事で載せたいと思います。
とりあえず、ここまででUbuntuの仮想マシンまでインストールできたので、この後はふつうのUbuntuとほぼ同じように使用できると思います。
自分もこの後、気になっているソフトのインストールを試していきたいと思います。