見出し画像

2024年度版 さくらVPS / CentOS9 Stream 初期セットアップ

さくらVPS 契約(CentOS9 Stream)を行ったので、システムアップデートから公開鍵・秘密鍵によるリモートサーバーへの SSH 接続までの一連の流れをまとめます。

ベースは「さくらVPS」様の「さくらVPS入門ガイド」ですが、情報が古かったり、飛び飛びだったりしているため、自分用に整理したコンテンツになっています。

本記事で書いている文章やスクショは私が個人で用意したモノです。

これは私個人の覚書になるため、丁寧な解説を求める方には向かない内容かもしれません(ちょっと頑張って分かりやすくしたところもありますが)。
なお、さくらVPSの「フィルタリング機能」を利用しているため、ファイヤーウォールの設定はここでは紹介していません。


SSH でログイン

接続するサーバのIPアドレス。
初期ユーザ名と初期パスワードを用意。

Windows11 なので TeraTerm をダウンロードして起きます。
TeraTerm をインストールしてログインします。

ホスト部分に IP Address を入力し、「OK」をクリックします。
次の画面で初期ユーザ名とパスワード(パスフレーズ)を入力して 「OK」をクリックします。 

余談ですが、私はもともと20年ほど Mac 使いだったのですが、近年諸事情で Windows11 に乗り換えています。
個人的には Mac の方が簡単だったのですが、 TeraTerm なるものにたどり着くのにひどく時間が掛かりました。

システムアップデート

初期の OS のアップデートです。
ご自身が使っているLinuxディストリビューションに合わせたアップデートコマンドを使ってください。

なお、初期ユーザのまま作業を継続します。

CentOS9 Stream アップデート

アップデートが始まると、時間が掛かります。
途中、コマンド入力が求められるのでメッセージを都度確認してください。

sudo dnf update

リブート

アップデートが終わったらリブート(再起動)します。

sudo reboot

作業ユーザの作成(sudoの権限を付与)

初期ユーザはセキュリティの都合上、この後削除します。
よって、今後メインで作業するためのユーザをここで作成しておきます。

ユーザの追加

username は自身の名前に置き換えてコマンドを使ってください。

sudo useradd username

ユーザにパスワードを付与

sudo passwd username

sudo (管理者権限)を使えるようにする

ユーザを作成しただけでは sudo コマンドが使えないので、次のコマンドで先ほど作成したユーザに権限を付与します。

sudo usermod -aG wheel username

ここで作成したユーザで以下の作業を行います。
古いターミナル画面は閉じてください。

作業ユーザテスト

現在のターミナルは閉じずに、新しいターミナルを開き新しい作業ユーザテストを行ってください。
Windows の TeraTrem では、[ファイル] から [新しい接続] のダイアログボックスを開いてください。

  1. 新しいユーザで SSH 接続ができるか?

  2. 新しいユーザで sudo コマンドが利用できるか?

いずれか失敗した場合は、原因を想定してやり直してから、次の作業に移ってください。

ここから先は、先ほど作成した新しい作業用ユーザのターミナルで作業を行います。
よって、上記の「SSH 接続」と「sudo」コマンドが利用できることが確認できてからこれからの作業を行ってください。

デフォルトユーザの削除

つぎのコマンドでユーザを削除できます。

sudo userdel -r username

削除したユーザのホームディレクトリを削除する場合

さくらVPSのデフォルトユーザはユーザを削除した時点でホームディレクトリは消えたようでした。念のため下記にホームディレクトリを削除するコマンドを表記します。

sudo rm -rf /path/to/directory

rootユーザの設定

初期ではパスワードがないため、パスワードを与えます。
ただし、rootユーザによるログインができないようにこの後、制限を掛けます。

root ユーザにパスワードを付与

sudo passwd root

sshd_config ファイルを編集

エディタで編集します。
下記は vim で sshd_config を開くコマンドです。
ディレクトリーの Path は CentOS9 Stream の値です。お使いの Linux ディストリビューションに合わせてください。

sudo vim /etc/ssh/sshd_config

sshd_configの変更点(root ユーザによるログインを禁止)

PermitRootLogin の行を見つけて以下の通りに変更する。
セキュリティ上必要な作業で、 root ユーザによるログインは行えないようにします。

PermitRootLogin no 
先頭の # を外し、最後を no にします。

■sshd のリロード(有効化)
sshd_config を変更したら再起動します。

sudo systemctl restart sshd

sshd の設定が有効になっているか、念のため確認してください。

systemctl status sshd

現時点での状態

  1. root ユーザはパスワードを持っている。

  2. root ユーザはサーバにログインできな。

  3. 初期ユーザは削除済み。

  4. 作業ユーザは作成済み。

  5. 作業ユーザは sudo コマンドを使い管理者権限が利用できる。

  6. 作業ユーザだけ、パスワードを利用してサーバにログインができる。

現在は、6番にあるように、ユーザ名とパスワードが分かれば誰でもログインできるという危険な状態です。

次のステップとして、公開鍵と秘密鍵という対の鍵を利用して、秘密鍵を持つコンピュータからしかログインできないようにセキュリティを仕上げます。
結論としてはパスワードを使ったログインができないようにするということです。

初期設定最後の仕上げする内容

事前に公開鍵、秘密鍵を保存するフォルダを作成しておきます。

公開鍵、秘密鍵、パスフレーズを作成

Window の場合は、TeraTrem で簡単に作成することができます。
公開鍵(id_rsa.pub)・・・後でリモートサーバに配置します。
秘密鍵(id_rsa)・・・・・SSH 接続するローカル PC で利用します。
パスフレーズはそれぞれの鍵を保存するときに、パスフレーズを入力してから保存します。

TeraTrem の「設定」から「SSH鍵生成」を選びます。

RSA をチェックして、「生成」をクリック
パスフレーズを入力したら、「公開鍵の保存」と「秘密鍵の保存」をそれぞれクリックします。

リモートに公開鍵を登録

作業ユーザ(秘密鍵を利用して接続したい)で、TeraTrem を利用してログインします(現在は ユーザ名とパスワードが使用できます)。

Windows のエクスプローラの公開鍵ファイル(id_rsa.pub)をドラッグして、ターミナルウインドウにドラッグ&ドロップします。

画面左中央のエクスプローラのid_rsa.pub をターミナルへドラッグ

TeraTrem の転送ダイアログボックスが表示されます。
SCP 設定欄に「~/」を入力して保存します。

リモートサーバーでの作業

パーミッションの設定など

ターミナルのユーザのホームディレクトリがカレントディレクトリになっていることを確かめてから下記のコマンドを順番に行います。

mkdir .ssh
chmod 700 .ssh
cat id_rsa.pub > .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
rm -f id_rsa.pub

sshd_config ファイルの再設定(パスワード利用によるログイン禁止)

作業ユーザから管理者ユーザにユーザをスイッチします。
先に作成した root ユーザのパスワードで切り替えます。

su -

rootユーザになっていることをターミナルで確認したら。
もう一度、エディタで sshd_config を開きます。

vim /etc/ssh/sshd_config

次の行を探して、「#PasswordAuthentication yes」を見つけて、下記のように変更します。
これはパスワードを利用したログインを出来なくする設定です。

PasswordAuthentication no
先頭の # を外して、最後を no に直します。
黄色く反転しているのは「検索」で探した名残です。

保存して、エディタを閉じます。

sshdをリロードして有効にします。

systemctl restart sshd

sshd の設定が有効になっているか、念のため確認してください。

systemctl status sshd

これより何パターンかログインテストを行いますが、現在開いているターミナルは閉じないでください。
閉じてしまうとサーバにアクセスができなく(正確には困難)になります。

最終ログインテスト

ここで行うテストはいくつか種類があります。
ここで重要なことは2つ。
正常処理の「作業ユーザのテスト、1番」だけではなく、それ以外の作業が「正しく拒否」されていることを確認してください。

作業ユーザのテスト

  1. 秘密鍵とパスフレーズを利用したログインが成功することを確認

  2. パスワードを使ったこれまでのログインが拒絶されることを確認

  3. パスワードレス、ユーザ名のみでのログインが拒絶されることを確認

  4. パスワードレス、ユーザ名レスでのログインが拒絶されることを確認

ユーザ名、パスフレーズを入力し、「RAS/DSA・・・省略」をチェックし、秘密鍵の一番右のアイコンをクリックして「id_rsa」ファイルを選択してください。

root ユーザのテスト

  1. パスワードを使ったこれまでのログインが拒絶されることを確認

  2. 秘密鍵とパスフレーズを利用したログインが拒絶されることを確認

  3. パスワードレス、ユーザ名のみでのログインが拒絶されることを確認

以上で、本コンテンツは終わりです。
正常にログインが出来て、拒絶テストも通れば安全にリモートサーバにアクセスすることができます。
公開鍵と秘密鍵の管理には気をつけてください。

ファイヤーウォール設定について

今回、ファイヤーウォール設定は紹介しませんでした。
私が利用しているさくらVPSでは「フィルタリング機能」という管理画面で port を開いたりすることができます。
私はその「フィルタリング機能」を有効にしています。
自分で sshd_cofig をいじり、port を開けたりすると、干渉し合い正しく機能しなくなるため、ファイヤーウォールが個別に必要な方は自身でおこなってください。

vim エディタのコマンドメモ

i 挿入モード
/(スラッシュ) 検索モード
:wq  上書き保存
:q  何もしないで終了
:q! 強制終了



この記事が気に入ったらサポートをしてみませんか?