- ① SSH、ユーザー追加
- ② IPv4/IPv6追加、netplan、ufw
- ③ Apache2
- ④ Let's Encrypt
- ⑤ PHP
- ⑥ MariaDB
- ⑦ WordPress
- ⑧ Dovecot、Postfix
- ⑨ Vsftpd
- ⑩ Python
- ⑪ llama.cpp、ChromaDB
- ⑫ Anaconda、Keras、TensorFlow
- ⑬ Node.js
- ⑭ MongoDB
- ⑮ Mosquitto
- ⑯ RabbitMQ
- ⑰ Supervisor
01作業環境の制約を整理する
今回の移設作業はiPad mini + Termiusを主軸に進める。ただしConoHa VPSのウェブコントロールパネルには、 iPad miniのSafariでは十分に動作しない機能があるため、コントロールパネル操作の一部はPCのブラウザを併用した。 一方でPCブラウザ上のウェブコンソール機能はキーボード入力に難があり、常用には向かない。
そこで、サーバー申込み時点でrootパスワードに加えてSSH Keyオプションを指定し、秘密鍵をダウンロード。
セキュリティグループ機能にIPv4v6-SSHを追加してポート22を開放し、Termiusを設定してrootで接続する構成をとった。
ウェブコンソールはあくまで最終手段として温存する。
02rootで接続し、パスワード認証を止める
Termiusでroot接続を確立したら、真っ先にパスワード認証を無効化する。鍵はすでに手元にあるので、 ここを先に締めておけば、この後の作業中に総当たり攻撃の対象になり続ける時間を最小化できる。
03ログインユーザーを追加する
rootのまま、日常運用で使う作業ユーザーを作成する。adduserは対話式で、
ホームディレクトリ作成・プライマリグループ作成・パスワード設定までまとめて行ってくれる。
ここで設定するパスワードはリモートSSHでは使わない(パスワード認証は無効化済みのため)が、
sudo実行時とコンソール救済アクセス用に必要になるので、必ず設定しておく。
04新ユーザーに公開鍵を配置する
パスワード認証を切ってある以上、鍵を先に置かないと新ユーザーでは一切ログインできない状態になる。 Termiusで使っている公開鍵をここで登録する。
05新しい接続で動作確認する
Termiusで新しいタブ・新しい接続設定を開き、login-userユーザー・鍵認証でログインできること、
sudo -iが通ることを確認する。ここで確認が取れるまではrootセッションを閉じないのが鉄則。
login-userで鍵ログイン、sudo実行まで到達したことを確認してから次に進んだ。
06rootアクセスの後片付け
作業ユーザーでの疎通が取れたら、root接続をTermiusから削除し、
/etc/ssh/sshd_configにPermitRootLogin noを追加してsshdを再起動する。
07旧サーバーとの資産コピー用SSH鍵
HTMLファイルなどの資産を旧サーバーから新サーバーへscpで移すため、両サーバー間で鍵認証できる状態を作る。
両サーバーともパスワード認証は無効化済みなので、サーバー同士が直接鍵で認証し合う必要がある。
当初はTermiusのエージェントフォワーディングでどちらのサーバーにも秘密鍵を置かずに済ませる案を検討したが、 有料オプションだったため見送り、移設専用の鍵ペアを作成する方式を採用した。
migrate_keyは最終版の資産コピーが完了するまで残す。全コピーが終わった段階で、
新サーバーから鍵ファイルを削除し、旧サーバーのauthorized_keysのエントリも忘れずに削除する。
08ここまでの状態
- root接続はTermiusから削除済み、
PermitRootLogin no設定・sshd再起動まで完了 - 作業ユーザー
login-userの鍵ログイン・sudo実行を確認済み - 移設専用鍵ペアによる旧サーバー資産のscpコピーを確認済み(
migrate_keyは最終コピーまで保持)