Hiper-VにopenSUSEをインストールした
仕事で使っているRHEL系と、馴染みないけどWSLでも主流になっているDebian系(Ubuntu)とは別に、Enterprise Linuxの雄であるSUSEってどうなんだろうなって思って、とりあえずHiper-Vにopen SUSE Leap 15.5を立ててみた流れ。
今更だけど、SUSEってスーゼって読むんだね。いままでずっとスースとかスーセって読んでた。
ダウンロード
openSUSEのダウンロードページからLeapのIntel/AMD版のイメージファイルをダウンロードする。
一緒にchecksumファイルも公開されているので、checksumファイル内のハッシュ値とisoファイルのハッシュ値を比較してダウンロードが成功したかを確認する。
openSUSE Leap 15.5 - Get openSUSE
Windows PCのHiper-Vにインストールするので、Windowsにはopensslは標準ではインストールされていないので、certutilコマンドを使用してハッシュ値を確認する。
certutil -hashfile .\openSUSE-Leap-15.5-DVD-x86_64-Build491.1-Media.iso SHA256
この結果とchecksumファイル内のハッシュ値が等しければダウンロード成功している。
値が等しくない場合は、ダウンロード中や失敗している可能性があるので、ちゃんと確認する。
今回使用したファイルだとこうなる。
> certutil -hashfile .\openSUSE-Leap-15.5-DVD-x86_64-Build491.1-Media.iso SHA256 SHA256 ハッシュ (対象 .\openSUSE-Leap-15.5-DVD-x86_64-Build491.1-Media.iso): 53bcbcb82361c5261c9d0994ab0f94101bf28e61c06fe12d320984601be35a8f CertUtil: -hashfile コマンドは正常に完了しました。 > type .\openSUSE-Leap-15.5-DVD-x86_64-Media.iso.sha256 53bcbcb82361c5261c9d0994ab0f94101bf28e61c06fe12d320984601be35a8f openSUSE-Leap-15.5-DVD-x86_64-Media.iso
インストール作業
Hiper-V管理コンソールから新規インストールを開始する。
この時に名前は管理できさえすればなんでもいいので、好きなように設定する。
仮想マシンの作成が完了すると、こんな感じの画面が表示される。
そのあとはHiper-Vマネージャーから起動して、インストール作業を行う。
インストーラーが起動するとこんな感じでGUIで進むのでやりやすい。
言語設定はライセンス表示時に変更できるので、ここで日本語を選択する。
キーボードレイアウトは使用しているキーボード次第だが、使っているのはJIS106キーボードなので日本語。
ライセンス同意後はオンラインリポジトリを使用してインストールメディア同梱のパッケージを更新するかが選択できる。
飛ばしちゃってもいいけど、セキュリティ系更新は早めにってのもあるので、デフォルト設定で更新あるものは更新した。
パッケージ更新が終わった後にデスクトップ用途かサーバー用途かを選ぶ。
デスクトップ用途でもサーバー用途とできなくもないし、逆もそうだけど、とりあえず使ってみたいっていうところなので、デスクトップ用途でUbuntuでデフォルトのGNOMEを使用することにした。
パーティションは今回のものでは変更する必要性がないので、デフォルト。
タイムゾーンは日本。
ハードウェア時刻をUTCにってところは和訳が逆じゃないかと思うけど、チェックするとJST(UTC+9)時刻になるみたいなので、チェックあり。
ユーザーの作成。自動ログインは個人的に無いほうがいいと思っているが、セットアップ時はあっても困らないので、後で変更してもいい。
ここまでやってインストールするための準備が整ったので、内容の確認を行ってからインストール開始。
インストールが行われる。
インストールが終わると、ログインできるようになる。
インストール作業は終わったので、Hiper-Vの仮想マシン設定からopenSUSEのインストールメディアをアンマウントすることを忘れないようにする。
インストール後の作業
インストール後の作業として、これらの設定を行う。
- IPアドレス固定化
- 解像度
- sudoers
- リモートデスクトップ
- ファイアウォール
- SSH
IPアドレス固定化
Hiper-Vの場合、デフォルトだと起動毎にIPアドレスがDHCPを使用して自動振り分けされるので、そのための対策。
仮想スイッチを作成する手順は省略(もうあるので)
openSUSEを停止してから、Hiper-VのopenSUSEの仮想マシン設定を行う。
ハードウェアの追加からネットワークアダプターを選択。
その後、作成済みだったinternal-switchを追加する。
この状態でHiper-VのopenSUSEを起動し、ネットワーク設定を見ると、追加したinternal-switchがEthernet(eth1)として登録されている。
eth1の設定を変更するため、設定画面を開く。
設定するのは、IPv4のIPアドレスとサブネットマスクのみ。
これを設定することで再起動してもeth1のIPアドレスが固定化されるので、同じIPアドレスを使用してアクセスできるようになる。
ネットワーク設定の変更のためにはrootパスワードが必要なので、rootパスワードを入力して変更を完了させる。
インストール時に管理者パスワードを作成するユーザーと同じとしていたので、rootパスワードも同じ。
ネットワーク設定が終わったら、また再起動する。
再起動後にipコマンドでIPアドレスを確認すると、ネットワーク設定で設定した通りにIPアドレスが振られていることが確認できる。
ip addr show
解像度変更
確かUbuntu 22.04とかRockyだと解像度変更は設定ファイルの変更とかコマンドで修正が必要だった気がする。
openSUSEの場合はWindowsとかMacOSみたいに設定画面から変更できるみたいなので、楽だった。
適用するとすぐに解像度が変わるのと、このままでいいのかっていう確認があるので、タイムアウト前に確定する。
sudoers
sudoを介したコマンドを実行する際にrootパスワードの入力が必要なのはめんどくさいので、設定する。
いろいろ設定パターンがあったり、openSUSEとしての推奨があったりするが、現在のアカウントがsudoでrootパスワードを求められないようになればいいので、アカウントに対して許可を与える方式にする。
ということで、sudo visudoコマンドから、こんな変更を行う。
sudo visudo
わりと下のほうにあるこの部分にアカウントに対する許可を設定する。
## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL
xxxxxxxxxxがインストール時に作成したアカウント名で、現在も使用しているやつ。
## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL xxxxxxxxxx ALL=(ALL) NOPASSWD: ALL
これを保存すると反映される。
visudoがnanoで開かれるかviで開かれるか、他かっていうのは環境変数によるはずだが今回はviだった。
リモートデスクトップ
Hiper-Vマネージャーから接続すると、Windows-仮想マシン間でCopy & Pasteができないので、リモートデスクトップアクセスできるように設定する。
YaSTであればGUIから必要なソフトウェアのインストールができるが、今回はコマンドで実行した。
コマンドは異なるが、実行後の流れはよくあるパッケージ管理ソフトウェアと同じ。
sudo zypper install xrdp
sudo zypper install xrdp リポジトリのデータを読み込んでいます... インストール済みのパッケージを読み込んでいます... パッケージの依存関係を解決しています... 以下 1 個の推奨パッケージを自動的に選択しました: xorgxrdp 以下 2 個の新しいパッケージをインストールします: xorgxrdp xrdp 2 個の新規パッケージのインストール. 全ダウンロードサイズ:460.8 KiB。すでにキャッシュ済み:0 B。 この操作を行うには、追加で 2.2 MiB の容量が必要です。 続行しますか? [y/n/v/...? すべてのオプションを表示] (y): y
YaSTで行う場合は、ソフトウェア管理からxrdpを検索してインストールを行う。
インストールが終わると、xrdpが使用できるようになるが、xrdpを自動起動に設定しないと面倒なので自動起動されるように設定する。
他のLinuxディストリビューションのようにsystemctlコマンドでやることもできるが、お手軽にいろいろ設定変更ができるYaSTのGUIを使って変更する。
まずはアプリケーション一覧からYaSTを起動する。
起動時にはrootパスワードが必要になる。
YaSTを起動したら「システム」ー「サービスマネージャ」を選択する。
サービスマネージャではxrdpの自動起動設定と、停止している場合は起動する変更を行う。
変更が終わったら適用する。
ファイアウォール
次にファイアウォールの設定を行う。
ssh接続を行う場合や、リモートデスクトップ接続の際にファイアウォールの設定でサービスやポートを空けないと接続できないのはどれも同じ。
これもfirewall-cmdではなくYaSTから行えるので、YaSTから行う。
「セキュリティとユーザ」ー「ファイアウォール」を選択する。
ネットワークインタフェースのゾーン設定を変更していない場合、デフォルトではPublicが適用されるので、今回はPublicゾーンの変更を行うことになる。
デフォルトだとdhcpv6-clientとsshのみとなっているため、左側のリストからms-wbtを選択して、左側に移動させて適用する。
これでリモートデスクトップ接続がかのうになったはずなので、確認を行う。
SSH
SSH接続時のパスワード接続を不可として、公開鍵認証でのみログインできるようにする。
また、rootログインも不可とする。
鍵ファイルの作成と鍵ファイルの配置については、特に記述するところがないので、sshdの変更部分のみ。
sshd_configのオリジナルをバックアップしてから編集する。
sudo cp -ip /ssh/sshd_config /ssh/sshd_config.org sudo vi /etc/ssh/sshd_config
変更内容を比較すると以下の通りで、左がオリジナル、右が変更後のファイルになる。
sudo diff /etc/ssh/sshd_config.org /etc/ssh/sshd_config 32c32 < PermitRootLogin yes --- > PermitRootLogin no 57c57 < #PasswordAuthentication yes --- > PasswordAuthentication no
この後はsshdに変更を反映させるため、sshdを再起動する。
YaSTから行ってもいいが、このままコマンドで実行した。
sudo systemctl restart sshd
これで公開鍵認証は可能だが、パスワード認証は不可となった。