2024年度版 さくらVPS / CentOS9 Stream 初期セットアップ
さくらVPS 契約(CentOS9 Stream)を行ったので、システムアップデートから公開鍵・秘密鍵によるリモートサーバーへの SSH 接続までの一連の流れをまとめます。
ベースは「さくらVPS」様の「さくらVPS入門ガイド」ですが、情報が古かったり、飛び飛びだったりしているため、自分用に整理したコンテンツになっています。
本記事で書いている文章やスクショは私が個人で用意したモノです。
これは私個人の覚書になるため、丁寧な解説を求める方には向かない内容かもしれません(ちょっと頑張って分かりやすくしたところもありますが)。
なお、さくらVPSの「フィルタリング機能」を利用しているため、ファイヤーウォールの設定はここでは紹介していません。
SSH でログイン
接続するサーバのIPアドレス。
初期ユーザ名と初期パスワードを用意。
Windows11 なので TeraTerm をダウンロードして起きます。
TeraTerm をインストールしてログインします。
余談ですが、私はもともと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 では、[ファイル] から [新しい接続] のダイアログボックスを開いてください。
新しいユーザで SSH 接続ができるか?
新しいユーザで 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
■sshd のリロード(有効化)
sshd_config を変更したら再起動します。
sudo systemctl restart sshd
sshd の設定が有効になっているか、念のため確認してください。
systemctl status sshd
現時点での状態
root ユーザはパスワードを持っている。
root ユーザはサーバにログインできな。
初期ユーザは削除済み。
作業ユーザは作成済み。
作業ユーザは sudo コマンドを使い管理者権限が利用できる。
作業ユーザだけ、パスワードを利用してサーバにログインができる。
現在は、6番にあるように、ユーザ名とパスワードが分かれば誰でもログインできるという危険な状態です。
次のステップとして、公開鍵と秘密鍵という対の鍵を利用して、秘密鍵を持つコンピュータからしかログインできないようにセキュリティを仕上げます。
結論としてはパスワードを使ったログインができないようにするということです。
初期設定最後の仕上げする内容
事前に公開鍵、秘密鍵を保存するフォルダを作成しておきます。
公開鍵、秘密鍵、パスフレーズを作成
Window の場合は、TeraTrem で簡単に作成することができます。
公開鍵(id_rsa.pub)・・・後でリモートサーバに配置します。
秘密鍵(id_rsa)・・・・・SSH 接続するローカル PC で利用します。
パスフレーズはそれぞれの鍵を保存するときに、パスフレーズを入力してから保存します。
TeraTrem の「設定」から「SSH鍵生成」を選びます。
リモートに公開鍵を登録
作業ユーザ(秘密鍵を利用して接続したい)で、TeraTrem を利用してログインします(現在は ユーザ名とパスワードが使用できます)。
Windows のエクスプローラの公開鍵ファイル(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
保存して、エディタを閉じます。
sshdをリロードして有効にします。
systemctl restart sshd
sshd の設定が有効になっているか、念のため確認してください。
systemctl status sshd
これより何パターンかログインテストを行いますが、現在開いているターミナルは閉じないでください。
閉じてしまうとサーバにアクセスができなく(正確には困難)になります。
最終ログインテスト
ここで行うテストはいくつか種類があります。
ここで重要なことは2つ。
正常処理の「作業ユーザのテスト、1番」だけではなく、それ以外の作業が「正しく拒否」されていることを確認してください。
作業ユーザのテスト
秘密鍵とパスフレーズを利用したログインが成功することを確認
パスワードを使ったこれまでのログインが拒絶されることを確認
パスワードレス、ユーザ名のみでのログインが拒絶されることを確認
パスワードレス、ユーザ名レスでのログインが拒絶されることを確認
root ユーザのテスト
パスワードを使ったこれまでのログインが拒絶されることを確認
秘密鍵とパスフレーズを利用したログインが拒絶されることを確認
パスワードレス、ユーザ名のみでのログインが拒絶されることを確認
以上で、本コンテンツは終わりです。
正常にログインが出来て、拒絶テストも通れば安全にリモートサーバにアクセスすることができます。
公開鍵と秘密鍵の管理には気をつけてください。
ファイヤーウォール設定について
今回、ファイヤーウォール設定は紹介しませんでした。
私が利用しているさくらVPSでは「フィルタリング機能」という管理画面で port を開いたりすることができます。
私はその「フィルタリング機能」を有効にしています。
自分で sshd_cofig をいじり、port を開けたりすると、干渉し合い正しく機能しなくなるため、ファイヤーウォールが個別に必要な方は自身でおこなってください。
vim エディタのコマンドメモ
i 挿入モード
/(スラッシュ) 検索モード
:wq 上書き保存
:q 何もしないで終了
:q! 強制終了
この記事が気に入ったらサポートをしてみませんか?