AlmaLinux9を初期セットアップしよう
VPSコントロールパネルでAlmaLinux 9のインストールが終わりました。次はいよいよAlmaLinux 9に接続して初期セットアップです。といってもスタートアップスクリプトで初期セットアップは半ば終えています。
なぜスタートアップスクリプトを使用しているかというと、最初使用せずにあれこれ試している内に(WSL2のAlmaLinux9は試していたので、さくらのVPSでも延長線と考えていました)、コマンドkilledが連発しなんじゃこりゃと調べたら、1GBメモリから192MBも減少していることや、スワップファイルが設定されずにメモリ不足で落ちていたことがわかりました。だったら書き留めるのはスタートアップスクリプト使用時のほうが良かろうということです(さくらのVPS以外の事情は知りません)。
さくらのOSセットアップ情報には、クラッシュダンプ、スワップについて記載されています。クラッシュダンプの記述は残念でしたが(Kernel更新するとクラッシュダンプが有効化される)。
さくらのOSセットアップ情報(AlmaLinux9)
スタートアップスクリプトを実行した結果
VPSコントロールパネルで「稼働中」に変わってから、スタートアップスクリプトが完了するまで3分強掛かりました。スクリプトを使用しなければ数秒です。
カーネルクラッシュダンプを「有効化しない」を選択しましたが、しっかりダンプ用メモリが確保されています。スワップメモリがあるので"killed"は起きませんが、スワップに入る機会が増えて多少の影響がありそうです。
[スタートアップスクリプト実行直後]
こちらは、スタートアップスクリプトを使用せずにOSインストールした直後です。
"dnf update"を実行してkernelが更新された後、クラッシュカーネルダンプ用に192MB確保されています。
クラッシュカーネルダンプ用メモリを解放するには
メモリが減少する問題でいくつか記事を見つけました。さくらのVPSが用意している標準OSで発生するのはCentOS系のみで、Ubuntuで起きませんでした(Debianもおそらく)。
どちらもダンプ用メモリ確保の解消なのですが、新しいKernelにアップデートすると元に戻る問題を解消されていませんでした(対処はされている)。
/etc/kdump.confを見ていたら、"auto_reset_crashkernel"という項目があり、"kexec-tools更新あるいは新しいkernelのインストール時にcrashkernelを初期値に戻すかを選択。初期値はyes"。これを"no"とすることで更新があってもそのままとなるようです。("man 5 kdump.conf")
OS再インストールし、最初に "auto_reset_crashkernel no"を設定してOSアップデートしたところクラッシュカーネルダンプ用のメモリは確保されなくなりました。
/etc/kdump.conf
auto_reset_crashkernel no
(ファイルの終端付近に設定が固まっています)
クラッシュカーネルダンプのメモリが確保されてしまった後は、kdump.confの設定とともに次のどちらかを実行すればよいかと思います。--remove-args="crashkernel"のほうがちょっとだけメモリが増えました(8KB)。
$ sudo grubby --update-kernel=ALL --args="crashkernel=2G-4G:192M,4G-64G:256M,64G-:512M"
あるいは
$ sudo grubby --update-kernel=ALL --remove-args="crashkernel"
設定後リブート
$ sudo reboot
メモリ解放後のメモリ状況です。
[スタートアップスクリプト使用時]
スワップファイルを作成するには
スワップファイルについては、さくらのOSセットアップ情報でご利用プランに合わせて設定してください。と記載されているのでマニュアルは読みましょう、ということなのでしょう。
CentOS 7の頃はストレージがHDDからSSDへ切り替わる時期だったので別パーティションだったのでしょうか。今はストレージがSSDのみになりディスクフラグメントの配慮が不要ですから、スワップファイルは必要ならはご自由にどうぞということなのでしょう。別パーティションではスケールアップ時にサイズ見直しが難しいからかな。
スワップファイルを2GB追加の手順です。"/"に見えるのはちょっと...な方は適当な位置に追加してください。
スワップファイルの推奨サイズは次を参照。
RedHat Documentation 15.2. システムの推奨スワップ領域
$ sudo su -
# dd if=/dev/zero of=/swapfile bs=1M count=2048
# chmod 600 /swapfile
# mkswap /swapfile
# swapon /swapfile
# cp -p /etc/fstab /etc/fstab.org (fstabバックアップ)
# echo "/swapfile none swap sw 0 0" | tee -a /etc/fstab
# free -h (スワップの確認)
クラッシュカーネルダンプのメモリ領域開放、スワップファイル作成後のメモリ状況です。
コマンドkilledについて検証したところ、"dnf update"をこまめに実行していると早いうちにコマンドkilledで落ちましたが、最後にまとめて"dnf update"した場合は途中でコマンドkilledを目にすることがありませんでした。この場合サービスが落ちるなどの現象に見舞われるのかもしれません。
1GBメモリだから起きたことで、2GBメモリ以上だったらセットアップ完了以降も気が付かなかったかもしれません。
管理ユーザー名の変更について
スタートアップスクリプトで変更していない場合、管理ユーザー名が"alma"は嫌というときに変更します(管理ユーザー名が他人に知られている問題)。
前回CentOS 7のときにはインストール直後はrootユーザーでログインし管理ユーザーを追加しましたが、今回はSSH接続でrootユーザーのログインを許可していません。代わりに管理ユーザーが初期登録されており、almaユーザーでログインしているはずです。この管理ユーザーのalmaユーザーを変更する手順は、さくらのOSセットアップ情報に記載されています。
almaユーザーの名を変更するには、almaユーザーから全てログアウトして、rootユーザーでログインする必要があります。rootユーザーに一時パスワードを設定して、VPSコントロールパネルからシリアルコンソールを起動します(VNCコンソールは見辛い)。管理ユーザー名変更後にrootユーザーのパスワードを削除します。
rootユーザーのパスワード設定(8文字以上)
$ sudo passwd root
Changing password for user root.
New password:
VPSコントロールパネルからシリアルコンソール実行
例)almaユーザーをuseraユーザーに変更。シリアルコンソールからrootユーザーでログイン。
ユーザー名変更
[root@localhost ~]# usermod -l usera alma
[root@localhost ~]# id alma
id: 'alma': no such user
[root@localhost ~]# id usera
uid=1000(usera) gid=1000(alma) groups=1000(alma),10(wheel)
ホームディレクトリ変更
[root@localhost ~]# usermod -m -d /home/usera usera
[root@localhost ~]# echo ~usera
/home/usera
グループ名変更
[root@localhost ~]# groupmod -n usera alma
[root@localhost ~]# id usera
uid=1000(usera) gid=1000(usera) groups=1000(usera),10(wheel)
sudo設定変更
[root@localhost ~]# visudo
#alma ALL=(ALL) NOPASSWD: ALL
usera ALL=(ALL) NOPASSWD: ALL
sudo権限確認
[root@localhost ~]# sudo -l -U usera
シリアルコンソールからログアウト。変更後のユーザー名でログイン可能か確認し、sudoコマンドの利用を確認します。その後rootユーザーのパスワードを削除します。
$ sudo passwd -d root
$ sudo passwd -l root
ユーザー追加登録とパスワード認証
管理ユーザー以外に必要があればユーザーを追加します。
一人サーバーでユーザー追加は、公開しているWebサーバーに不要な権限を与えたくない場合や、何らかの理由で他のユーザー権限設定が必要な場合ですかね。
userb ユーザーを追加してみます。
[usera@localhost ~]$ sudo useradd userb
[usera@localhost ~]$ sudo passwd userb
Changing password for user userb.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
userbユーザーが、SSH鍵認証でログインするには公開鍵の登録が必要になり、公開鍵を登録するssh-copy-idコマンドを実行するにはSSHでパスワード認証が必要となります。
管理ユーザーが全て管理している場合パスワード認証は不要ですね。管理ユーザーが必要であれば鍵ペアを用意し必要なユーザー名に公開鍵を設置すればよいだけです。
SSHでパスワード認証を有効とする方法は、さくらのVPSではOSインストール時の選択により、/etc/ssh/sshd_configファイルの、グローバルセクションにある"PasswordAuthentication"の振る舞いが異なります。(AlmaLinux9でのみ動作確認)
- OSインストール時に「パスワードを利用したログインを許可する」をチェックオフ
"PasswordAuthentication"の設定値(yes/no)にかかわらずにパスワード認証は不可
(Matchブロックセクションは使用できる)
- OSインストール時に「パスワードを利用したログインを許可する」をチェックオン
"PasswordAuthentication"の設定値(yes/no)によりパスワード認証 許可・不可を変更可能
初期値は"yes"
- Matchブロックセクションで指定したユーザー
OSインストール時の「パスワードを利用したログインを許可する」の選択にかかわらず、
Matchブロックセクション内に"PasswordAuthentication yes"の設定でパスワード認証を許可
ssh-copy-id コマンドの動作について、WSL2のUbuntuでパスワード入力後止まるという現象が起きています。
Windows 11のターミナルでもssh-copy-idの代替操作は可能なので次のように操作するか、ssh-copy-idコマンドが使えるWSL2のAlmaLinux等で操作します。
(Windows 11 ターミナルなど)> ssh-keygen -t ed25519 -f 鍵ファイル名
> cat 鍵ファイル名.pub | ssh ユーザー@ホスト "mkdir -p ~/.ssh; chmod 700 ~/.ssh; cat >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys"
> ssh -i 鍵ファイル名 ユーザー@ホスト
(ssh-copy-id 使用時)
$ ssh-keygen -t ed25519 -f 鍵ファイル名
$ ssh-copy-id -i 鍵ファイル名.pub ユーザー@ホスト
$ ssh -i 鍵ファイル名 ユーザー@ホスト
毎回鍵ファイル名やユーザー@ホストを記述するのは面倒なので"~/.ssh/config"ファイルに接続情報を記述しておきます。
~/.ssh/config
Host ホスト名
HostName IPアドレス/ホスト名パス
User ユーザー名
IdentityFile 鍵ファイル名パス
Port ポート番号
IdentitiesOnly yes
TCPKeepAlive yes
ServerAliveInterval 15
ServerAliveIntervalおよびServerAliveCountMaxで、サーバーの接続断を検出する早さが変わってくるのでお好みに。
Sudoコマンドについて
インストール時に登録の管理ユーザーはwheelグループに登録されていてます。"/etc/sudoers"には、NOPASSWD: ALLで登録されているので、特に追加操作はありません。
追加ユーザーをwheelグループへ追加するには次を実行します。NOPASSWDとするにはvisudoコマンドで/etc/sudoersを編集します。
$ sudo usermod -aG wheel userb
(ーGだと、userbで他に登録した副グループが消えて副グループがwheelのみになる)
SSHのポート番号を変更
SSHのポート番号を変更については概ね前回と変わりません。スタートアップスクリプトでも変更できます。
ホスト名を変更
操作は前回と変わりません。スタートアップスクリプトでも変更できます。
CentOS 7ではデフォルトにlocalhost.localdomainが設定されていましたが、今回はVPSコントロールパネルに表示する逆引きホスト名が登録されていました。
sudo hostname set-hostname ホスト名
SSHのアクセス制限
AlmaLinux 9(CentOS系)では、IPアドレスやホスト名でアクセスを許可する「/etc/hosts.allow」や「/etc/hosts.deny」(拒否)が廃止されました。代わりに"/etc/ssh/sshd_config"ファイルに次のように記述を追加します。"AllowUsers"ディレクティブには、許可するユーザーあるいはユーザー@ホストを指定します。IPアドレス(CIDR形式含)、ワイルドカードも指定できます。拒否する場合は"DenyUsers"で指定します。(優先順はDenyUsers, AllowUsers)
変更後、sshd.serviceを再起動(reload)して接続あるいは拒否されることを確認してください。接続中のSSHはそのままにして問題対処に備えます。
/etc/ssh/sshd_config
#UseDNS no
UseDNS yes
AllowUsers usera *@IPアドレス *@*.example.jp userb@*.sample.jp
(useraはどこからでも、*.example.jpからどのアカウントでも、userbは*.sample.jpから)
ユーザー@ホストのみ許可するのが無難です。万一ネットワークが接続できなくなった場合に、シリアルコンソールから管理ユーザーとパスワードでログインできる準備は必要でしょうが。
ファイル作成時のパーミッション
CentOS 7でのumask初期値が 002 でしたが、今回は 022 のようでumaskの変更は必要ありません。
EPELリポジトリのインストール
RedHat系追加レポジトリ。
EPELリポジトリをインストールするときのみ指定するという方もいるようですが、ここでは事前にインストールしておきます。バージョンによって手順が多少異なるようです。
$ sudo dnf config-manager --set-enabled crb
$ sudo dnf install epel-release
tarコマンドのインストール
tar形式のアーカイブファイルを操作するtarコマンドは、OSインストール時点では存在しませんので、インストールします。
[usera@localhost ~]$ sudo dnf install tar
Dependencies resolved.
=================================================================================
Package Architecture Version Repository Size
=================================================================================
Installing:
tar x86_64 2:1.34-7.el9 baseos 876 k
Transaction Summary
=================================================================================
Install 1 Package
Perlのインストール
Perlはオプションとなりました。MovableTypeを使っている自分はもちろんインストールします。
CentOS 7ではv5.16でしたが、v5.32となり@INCへカレントディレクトリへのパスを通していないプログラムは手直しが必要です(v5.26以降)。
[usera@localhost ~]$ sudo dnf install perl
[usera@localhost ~]$ perl -v
This is perl 5, version 32, subversion 1 (v5.32.1) built for x86_64-linux-thread-multi
その他、vimエディタはここに来るまでにインストールしています。Copilotにはnano推しされたような気もしますが。
- AlmaLinux9をさくらのVPSでインストールしよう
- AlmaLinux9を初期セットアップしよう
- AlmaLinux9へWebサーバー(Apache)をインストールしよう
- AlmaLinux9へPHP(8.4)をインストールしよう
- AlmaLinux9へTLS証明書(Let's Encrypt)を導入しよう
- ALmaLinux9へMariaDBをインストールしよう(10.5 => 10.11)
- AlmaLinux9へメールサーバー(Postfix/Dovecot)をインストールしよう
- AlmaLinux9へDKIM、DMARCを設定しよう
フォローしませんか?
コメント