Dify用のConoHa VPS立ち上げからSSH設定まで

テクノロジー

はじめに

生成AIアプリ作成ツールとして注目されているDify。仕事で触れるうちに「これ、自分でももっと自由に試したい!」という気持ちが芽生え、AWS (Amazon Web Services) で実装したのですが、費用が高いうえにSpotインスタンスで不便だったので、コスパに優れたConoHa VPSで再構築してみることにしました。

この記事では VPSインスタンスの作成 → 起動 → SSHログイン までをガイドします。実際のDifyのインストール、起動、設定、サンプルアプリ実装は別記事で紹介する予定です。

掲載している ConoHaコントロールパネルおよびそのスクリーンショットの権利は、すべて ConoHaを提供するGMOインターネットグループ株式会社に帰属します。

ConoHa VPSインスタンスを作成する

ここからはいよいよ “箱” となるサーバーを用意します。ConoHaのアカウントはすでに作成済み、コントロールパネルにもログインできている状態を想定しています。まずは コントロールパネル左メニューの「サーバー追加」 またはサーバーリスト画面の右上にある 「+追加」ボタン を押します。

ConoHaのサーバー追加ボタン
  • サービス:VPS
  • イメージタイプ:Ubuntu ※自分に合ったOSを選んでください。
  • 料金タイプ:割引率と初期費用のバランスで12ヶ月を選択しました。
  • プラン: 4GB
  • rootパスワード: Ubuntuのrootパスワードを任意で設定してください。
  • ネームタグ:特に変える必要性を感じず、初期設定のままにしました。
  • オプション:初期設定のまま
    • 自動バックアップ:保守が容易になる便利な機能ですが、今回は有料オプションのため [無効] のままにします。
    • 追加ストレージ:初期容量で十分に足りること、そして有料オプションであることから [使用しない] を選択します。
    • セキュリティグループ:WebとSSHのポートは必要に応じて後から開放する予定です。現時点では初期設定の default のみを適用します。
    • SSH Key:汎用的な方法で後ほど設定するため、ここでは [使用しない] を選択します。
    • スタートアップスクリプト:現段階では特に必要がないため、こちらも [使用しない] とします。

このスペックで月額1,289円という価格は魅力的ですが、一括で支払うとまとまった金額になるため、負担の大きさが気になります。

合計金額欄の下にある [次へ] ボタンをクリックすると、決済手続きへ進みます。以降の操作は画面の案内どおりに進めれば問題ありませんので、本記事では詳細な説明を省略します。

ConoHaのVPS作成画面

サーバーリストに作成されたサーバーが追加されます。次に、セキュリティグループを調整してSSHでログインできるようにします。ネームタグをクリックすると、該当VPSの詳細画面が開きます。

ConoHaのサーバーリスト画面

ConoHa VPS にはコントロールパネル経由で操作できる「コンソール」機能がありますが、応答が遅く操作性に難があるため、普段利用している PuTTY でログインできるよう設定します。認証方式は公開鍵認証を用いる予定ですが、SSH ポートを常時パブリックに開放しておくのはセキュリティ上望ましくありません。そのため 必要なときだけ セキュリティグループを調整し、SSH アクセスを一時的に許可する運用とします。

とはいえ、SSHの設定中にミスをするとログインできなくなる可能性があるため、コントロールパネルにコンソール機能が付いているのは保険の意味で有益と思います。

ConoHaの詳細情報画面

SSH設定

まずは、SSH用のセキュリティグループを追加します。ConoHaで初期付与されるdefaultセキュリティグループは、同一テナント(=契約単位)内のサーバー間通信のみを許可する設定になっています。残すかどうかは必要性次第です。AWSでもVPC作成時に同名のdefaultセキュリティグループが生成されるため、ほぼ同じ役割と考えて差し支えありません。

私は今のところWordPressサーバーとバックエンドで連携する予定がないため、defaultグループを外し、SSH だけを許可するグループを適用しました。将来的に連携が必要になったら、改めてdefaultグループを追加します。

各テナント毎の”default”セキュリティグループがアタッチされているサーバーからのみ通信を許可されているセキュリティグループ。例外を除き、通常本セキュリティグループが標準で設定される。

引用:https://doc.conoha.jp/products/vps-v3/security-v3/security-group-v3/

ConoHaのセキュリティグループ編集状況

まずは SSH でサーバーに接続できるか を確認します。初期設定では

  • 認証方式 :公開鍵認証が無効で、パスワード認証のみ有効
  • root ユーザー :リモートログインが許可されている

という状態です。
このまま運用するとセキュリティリスクが高いため、パスワード認証で接続確認が取れたらすぐに次の対策を行います。

  1. 公開鍵認証を有効化し、パスワード認証は無効化する
    • 自分の公開鍵をサーバーに設置し、PasswordAuthentication no を設定します。
  2. root ユーザーのリモートログインを禁止する
    • PermitRootLogin no とし、通常ユーザーでログイン後に sudo で権限を昇格させる運用に切り替えます。

これらの設定を行うことで、ブルートフォース攻撃などのリスクを大幅に低減できます。

私はSSHクライアントとしてPuTTYを利用しており、下記のように設定してサーバーにアクセスを試みます。

  • Host Name (or IP address)にサーバーのIPアドレスを入力
  • Saved Sessionsに適当な設定名を入力
  • Saveボタンをクリック
  • Openボタンを押してセッションを開始する
PuTTYのセッション設定画面

サーバーへ初回接続すると “PuTTY Security Alert” が表示され、

The server’s host key is not cached in the registry …

と警告されます。これは「まだホスト鍵を登録していない」という意味で、深刻な警告ではありません。内容を確認したうえで [Yes] をクリックして鍵をキャッシュすれば、次回以降このダイアログは表示されなくなります。

[Yes]をクリックし、ログインプロンプトを表示します。ユーザー名に root、パスワードに VPS 作成時に設定したものを入力すれば、サーバーへログインできます。

ログインプロンプト

SSH鍵認証の準備

rootユーザーでログインしている前提で読み進めてください。

adduserコマンドでユーザーを作成

# sudo adduser <ユーザー名>

対話式でパスワード、フルネームなどを設定できますが、すべて空欄で構いません。
adduser はホームディレクトリ(/home/<ユーザー名>)とメール用スプールも自動で作成します。

sudo 権限を付与(管理者にしたい場合)

# sudo usermod -aG sudo <ユーザー名>

-aGappend to Group の略。sudo グループに追加することで sudo コマンドが使えるようになります。強力な権限を持つrootユーザーで作業を続けるのは危険なので、作成したユーザーでログインしなおします。

SSH 公開鍵を登録(公開鍵認証を使う場合)

新ユーザーでログインし、.ssh ディレクトリを作成

mkdir -p ~/.ssh
chmod 700 ~/.ssh

PuTTYgenで公開鍵、秘密鍵を作成

PuTTYgenのParametersで、Type of key to generateはRSAを選択、Number of bits in a generated keyには4096を入力します。デフォルトの2048では最近のUbuntuは受け付けないようです。Generateボタンを押して、プログレスバーの下の空白スペース上でマウスを適当に動かします。マウスの動きが乱数となり、ユニークな鍵が生成されます。

生成が終わると下記の画面に変わります。サーバーに送る公開鍵は、”Public key for pasting into OpenSSH authorized_keys file”欄に書かれている文字列です。文字列をコピーし、id_rsa.pubというファイル名(実際は任意のファイル名でOK)で保存します。秘密鍵は”Save private key”ボタンを押し、id_rsa.ppkというファイル名で保存します。セキュリティを高めるために、秘密鍵にKey passphraseを設定することを推奨します。

公開鍵をサーバーに登録

鍵を保存したら、公開鍵 (id_rsa.pub) をサーバーへ転送します。私は WinSCP を使用していますが、お好みのファイル転送ツールで構いません。アップロード先は、先ほど作成した ~/.ssh ディレクトリです。

次に、転送した公開鍵を、サーバーの公開鍵リスト (authorized_keys) に追加します。

# 既存キーがないならファイル名をそのまま変更
mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

# 既存キーを残したい場合は cat で追記
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

公開鍵リストのパーミッションを適切に設定します。これを誤ると SSH 認証が通りません。

chmod 600 ~/.ssh/authorized_keys
chown <ユーザー名>:<ユーザー名> ~/.ssh/authorized_keys

次に、 SSHサーバーの 設定を変更して ① 公開鍵認証の有効化、② パスワード認証の無効化、③ root のリモートログイン禁止 を行います。
従来は /etc/ssh/sshd_config に直接追記していましたが、最近の OpenSSH では

Include /etc/ssh/sshd_config.d/*.conf

sshd_configの先頭にあり、/etc/ssh/sshd_config.d/ 配下の *.conf ファイルを 数字の小さい順 に読み込み、最初に読まれた値が優先 される仕組みです。
そのため、設定を確実に反映させるべく /etc/ssh/sshd_config.d/00-mysettings.conf を作成し、以下の内容を記述しました(所有者は root:root)。

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
ChallengeResponseAuthentication no
PermitRootLogin no

下記のコマンドを実行して設定を有効化してください。

sudo sshd -t   # 構文チェック
sudo systemctl restart ssh

次に鍵認証でログインできるかテストします。PuTTYのConnection -> SSH -> Auth -> Credentials の”Private key file for authentication”に公開鍵と一緒に作成した秘密鍵を指定します。Sessionに戻って設定をSaveし、Openボタンをクリックしてログインを開始します。

以下のように公開鍵で認証する旨のメッセージが表示されれば設定は成功です。

login as: <user name>
Authenticating with public key "rsa-key-20250728"
Passphrase for key "rsa-key-20250728":

試しに PuTTY から秘密鍵の指定を外し、パスワードだけで接続を試みると、以下のように拒否されます。この挙動により、PasswordAuthentication no が有効になり パスワード認証が無効化 されたことを確認できます。

以上でVPSの立ち上げとSSHの設定は完了です。次回はDifyのインストールを行います。

コメント

タイトルとURLをコピーしました