
VPSはただ契約しただけでは使えません。本記事では、開発用途に使える状態までVPSを初期設定する手順を、セキュリティ対策を含めて丁寧に解説します。一般ユーザーの作成、鍵認証の設定、UFWによるポート制御など、トラブルのない安定運用を目指すための最小構成を紹介します。
本記事は「ConoHa VPS」を使用して検証・構築した手順をベースに解説しています。
ConoHa VPS他社VPSでも同様の設定が可能ですが、一部の操作や仕様が異なる場合があります。また、Ubuntu 22.04を例に解説しています。サーバーOSとして広く使われているLTS(長期サポート)版のため、他の環境でも基本的な操作は共通しています。
※なお、ConoHa VPSの特徴や料金プラン、他社との違いについて詳しく知りたい方は、以下の記事もあわせてご覧ください。
【ConoHa VPS】ConoHa VPSって実際どう?特徴と実態を解説
VPS環境を準備する

このセクションでは、ConoHa VPSを使って開発用のLinuxサーバーを安全に構築するための初期設定を行います。対象OSはUbuntu 22.04を使用しています。この記事では、VPS作成時にSSH鍵を指定しておき、rootユーザーの /root/.ssh/authorized_keysに公開鍵が自動配置されている状態を前提としています。作成した鍵は一般ユーザーにも引き継いで利用する構成です。
システムを最新の状態にアップデートする
この操作は root ユーザーで行ってください。ログイン直後の初回状態では root になっている想定です。
# apt update && apt upgrade -y
タイムゾーンを日本時間に変更する
デフォルトではUTCになっている場合があります。作業時のログが日本時間で記録されるよう、タイムゾーンをJSTに変更します。
# timedatectl set-timezone Asia/Tokyo
反映されているか確認します。
# timedatectl status
Local time: 月 2025-04-21 15:26:18 JST
Universal time: 月 2025-04-21 06:26:18 UTC
RTC time: 月 2025-04-21 06:26:18
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
環境によっては timedatectlが使用できない場合があります。その場合は /etc/localtimeのシンボリックリンクを直接変更する方法もあります。
なお、タイムゾーンを設定しても、サーバーの時刻が正しくない場合があります。 これは、NTP(ネットワーク時刻同期)が無効になっているケースです。
以下のコマンドで、現在の同期状態を確認してください。
# timedatectl status
「 NTP service: active」「 System clock synchronized: yes」となっていれば問題ありません。
もし同期が有効になっていない場合は、以下のコマンドでNTP同期サービスを有効化しましょう。
# systemctl enable --now systemd-timesyncd
数秒後に再度 timedatectl status を実行し、「synchronized: yes」になっていることを確認してください。
→ これで時刻同期が有効になり、サーバーの時刻が正しく保たれるようになります。
スワップ領域を追加して安定性を高める
ConoHa VPSでは、プランや構成によっては最初からスワップ領域が有効になっている場合があります。 まずは以下のコマンドで、現在スワップが存在しているかを確認してください。
# swapon --show
何も表示されなければスワップは未設定です。以下の手順で新たにスワップ領域を追加します。 すでにスワップが存在する場合、このセクションの作業は不要です。
スワップが未設定の場合
まず、1GBのスワップファイルを作成します。
# fallocate -l 1G /swapfile
作成したファイルに適切なパーミッションを設定します。
# chmod 600 /swapfile
スワップとして初期化します。
# mkswap /swapfile
スワップとして有効化します。
# swapon /swapfile
現在のメモリとスワップの使用状況を確認します。
# free -h
出力例:
total used free shared buff/cache available
Mem: 985Mi 139Mi 641Mi 8.0Ki 205Mi 699Mi
Swap: 1.0Gi 0.0Ki 1.0Gi
/etc/fstab にスワップ設定を追加する
再起動後もスワップを有効にするためには、 /etc/fstab に設定を追加する必要があります。誤った記述をすると、VPSが起動不能になる可能性があるため、viで慎重に編集してください。
以下のようにファイルを編集します。
# vi /etc/fstab
ファイルの末尾に、次の1行を追加します。
/swapfile none swap sw 0 0
記述に誤りがないか、以下のコマンドで確認します。
# findmnt --verify
エラーがなければ問題ありません。最後にもう一度 free -h を実行して、スワップが有効になっていることを確認しましょう。
一般ユーザーを作成する(rootユーザーで実行)
セキュリティ上の理由から、rootアカウントを直接使用せず、一般ユーザーを作成して運用します。以下の操作はすべて root ユーザーで行ってください。
# adduser bepro
作成後、sudo権限を付与します。
# usermod -aG sudo bepro
一部の環境では sudo グループに所属するだけでは権限が反映されないことがあるため、必要に応じて以下のように設定ファイルを作成してください。
# echo 'bepro ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/bepro
SSH鍵を一般ユーザーにコピーする
この作業も root ユーザーで実行します。ConoHa VPSでは、VPS作成時に指定した公開鍵が /root/.ssh/authorized_keysに自動で配置されています。この公開鍵を、一般ユーザー bepro にもコピーして利用できるようにします。
# mkdir -p /home/bepro/.ssh
# cp /root/.ssh/authorized_keys /home/bepro/.ssh/
# chown -R bepro:bepro /home/bepro/.ssh
# chmod 700 /home/bepro/.ssh
# chmod 600 /home/bepro/.ssh/authorized_keys
もしファイルが存在しない場合は、VPS作成時にSSH鍵を指定していなかった可能性があります。
その場合は、ローカルで公開鍵(例:
~/.ssh/id_rsa.pub)を生成し、その内容をVPSの
/home/bepro/.ssh/authorized_keysに手動で貼り付けることで対応可能です。
以上で、一般ユーザー bepro のアカウントでも公開鍵認証でログインできるようになります。
ここで一度現在のセッションを終了し、秘密鍵を指定して bepro ユーザーとしてログインできるか確認してください。
# exit
$ ssh -i ~/.ssh/id_rsa bepro@xxx.xxx.xxx.xxx
接続後にパスワードを求められずにログインできれば、鍵認証は正常に設定されています。
なお、SSH鍵が正しくコピーされていても、 /home/bepro ディレクトリ自体のパーミッションが緩すぎる場合(例:777など)、鍵認証がブロックされることがあります。 以下のコマンドで適切な権限を設定しておいてください。
# chmod 755 /home/bepro
この設定を怠ると、 Permission denied (publickey) のエラーが発生します。
UFWでポート制御を設定する

ここからは bepro ユーザーで操作を続けます。ファイアウォール(UFW)を有効化する前に、必要なポートを明示的に許可しておきます。許可せずに有効化すると接続不能になるため、**順序が非常に重要**です。
以下のポートを開放します。 5000番は Flask アプリのテスト用途として使用予定のため開放しています。不要な場合は省略してください。
$ sudo ufw allow 22
$ sudo ufw allow 80
$ sudo ufw allow 443
$ sudo ufw allow 5000
ポートが許可されたかどうかを確認します。
$ sudo ufw status numbered
Status: inactive
UFWを有効化します。この時点で設定が間違っていると、**SSH接続が遮断される可能性**があります。
$ sudo ufw enable
再度確認すると、状態が activeになっているはずです。
$ sudo ufw status numbered
Status: active
To Action From
[ 1] 22 ALLOW IN Anywhere
[ 2] 80 ALLOW IN Anywhere
[ 3] 443 ALLOW IN Anywhere
[ 4] 5000 ALLOW IN Anywhere
※ 状況によって番号や順序は異なる場合があります。
もし誤ってSSHポート(22番)を開放せずに ufw enableして接続できなくなった場合は、ConoHa VPSの管理画面からVNCコンソールを起動し、ファイアウォール設定を修正してください。
なお、ポートを開けたはずなのに接続できない場合は、次のコマンドで UFW の詳細状態を確認してみてください。特に IPv6 経由でのアクセスや、既存のポリシー設定によってブロックされているケースを洗い出すのに役立ちます。
$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: reject (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp (OpenSSH) ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
5000/tcp ALLOW IN Anywhere
22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6)
80/tcp (v6) ALLOW IN Anywhere (v6)
443/tcp (v6) ALLOW IN Anywhere (v6)
5000/tcp (v6) ALLOW IN Anywhere (v6)
上記のように「(v6)」と記載された行は、IPv6用の通信ルールです。 UFWでは、IPv4と同じポートをIPv6向けにも開放する設定が自動で追加されるため、重複やエラーではありません。
スワップ領域を追加して安定性を高める
1GBプランなどの小規模なVPSでは、メモリ不足によるアプリケーション停止を防ぐために、スワップ領域を手動で確保しておくことが推奨されます。ここでは 1GB のスワップファイルを作成し、再起動後も有効になるように設定します。
まずはスワップファイルを作成し、有効化します。
$ sudo fallocate -l 1G /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
スワップが有効になっているか確認します。
$ free -h
total used free shared buff/cache available
Mem: 985Mi 139Mi 641Mi 8.0Ki 205Mi 699Mi
Swap: 1.0Gi 0.0Ki 1.0Gi
再起動後もスワップが有効になるよう、 /etc/fstab に以下の行を追加します。
$ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
最後にもう一度 free -h を実行し、設定が反映されていることを確認しておきましょう。
VSCodeでの開発を前提にするなら、「SSHで接続する環境が整っている前提で読み進めてください」程度の前置き文を上部に追加してもよい。
VPSにSSHで接続する際のローカル開発環境(VSCode + Remote-SSH)設定については、以下の記事で詳しく解説しています。
VSCode × VPS リモート接続手順まとめ【SSH設定対応】
すぐに使える高速レンタルサーバー【ConoHa VPS】
完全無料!ConoHa VPSなら安心して始められる!
コストを抑えてVPSを始めたい人にピッタリのサービスです!
はじめての開発でも扱いやすい管理画面&わかりやすい料金体系で、迷わずスタートできます。
こんな方におすすめ!
✅ 初期費用ゼロ・月額上限ありで安心!
✅ 初心者でも扱いやすい直感的なUI!
✅ 1時間単位の課金で使った分だけ支払い!
✅ APIやスナップショット機能も豊富!
✅ 学習〜商用運用まで幅広く対応!
VPS設定後にやっておくと安心なこと

初期設定が完了して一息ついたあと、「本当にこのまま運用して大丈夫か?」という不安が残る人も多いはずです。このセクションでは、VPSを安定して使い続けるために最低限やっておきたい“後処理”のポイントを整理しました。
不要なサービスを無効化しておく
VPSのテンプレート構成によっては、意図しないサービスが自動的に起動している場合があります。たとえば、メール送信機能のある postfix や、Webサーバーの apache2 などです。使用しないサービスがバックグラウンドで動いていると、セキュリティリスクやリソース浪費につながることがあります。
起動中のサービスを確認するコマンド
$ sudo systemctl list-units --type=service --state=running
リストを見て、不要なサービスが含まれていれば以下のようにして停止し、次回起動時にも動かないように設定しておくのが基本です。
サービスを停止し、無効化する例
$ sudo systemctl stop postfix
$ sudo systemctl disable postfix
必要なサービスだけを動かすことで、VPSのメモリ使用量も抑えられ、より安定した運用が可能になります。
自動アップデートを無効化または制御する
一部のVPS環境では、定期的にパッケージが自動アップデートされる仕組みが有効になっている場合があります。これは一見便利に思えますが、特定のアプリやミドルウェアが手動管理されている場合には、意図せず壊れてしまうリスクにもつながります。
自動アップデート設定の状態を確認
$ systemctl status dnf-automatic.service
無効化したい場合のコマンド(AlmaLinux系)
$ sudo systemctl disable --now dnf-automatic.service
常に手動で管理する方針であれば、この自動処理はオフにしておいた方が安全です。一方で、最低限のセキュリティアップデートだけは自動にしたいという場合は、設定ファイルで細かく制御することも可能です。
VPS設定の再確認とチェックポイント
VPSの初期設定が完了しても、「実は設定ミスしていた」「重要な部分を見落としていた」ということはよくあります。このセクションでは、見逃しやすい2つのポイントについて、設定後のチェック方法を紹介します。
SSHでrootログインが無効化されているか
セキュリティ対策として「rootユーザーでの直接ログインを禁止する」設定は必須です。しかし、実際には初期設定のままで有効になっていることもあり、設定漏れに気づかないまま使ってしまうケースもあります。
設定ファイルの確認箇所
$ sudo vi /etc/ssh/sshd_config
下記のように PermitRootLogin が no になっているかを確認してください。
PermitRootLogin no
設定後は、SSHサービスを再起動して反映させる必要があります。
SSH再起動コマンド
$ sudo systemctl restart sshd
この設定を行っておけば、root権限を持つユーザーを一段階はさむことで、パスワード攻撃の対象になるリスクを大きく減らせます。
開放ポートに不要な穴が空いていないか
UFWでポートを制御していても、「思っていた以上にポートが空いていた」ということがあります。明示的に確認することで、不要な穴を塞ぎ、セキュリティの精度を高めましょう。
現在のルールを確認するコマンド
$ sudo ufw status numbered
出力例:
Status: active
To Action From
[ 1] 22 ALLOW IN Anywhere
[ 2] 5000 ALLOW IN Anywhere
不要なポートがある場合は、次のようにして削除が可能です。
不要ポートの削除方法(例:2番のルールを削除)
$ sudo ufw delete 2
設定変更後は、再度 sudo ufw status numbered でルールが正しく更新されているか確認しましょう。
よくあるミスと対処法まとめ
VPSの初期設定では、ちょっとした操作ミスが原因でサーバーに接続できなくなることがあります。このセクションでは、初心者がよく直面する2つのトラブルについて、具体的な原因と対処法を紹介します。
UFWを有効化したら接続できなくなった
ファイアウォール(UFW)を有効化した直後にSSH接続できなくなるトラブルは非常に多く見られます。原因の多くは、**ポート22番(SSH)を開ける前にUFWを有効化した**ことです。
このトラブルの流れ(例)
$ sudo ufw enable
→ 即座にSSH切断され、以後接続不能
もしこの状態になってしまった場合、VNCコンソールなどの“サーバーに直接触れる手段”を使って内部から復旧する必要があります。
復旧手順(ConoHa VPSのVNCコンソールを例に)
$ sudo ufw allow 22
$ sudo ufw reload
以後、UFWの有効化は次の順序で行うのが安全です:
安全な手順
$ sudo ufw allow 22
$ sudo ufw enable
必ず、**SSHポートの許可を確認してから有効化**するクセをつけましょう。
秘密鍵が反映されない/接続できない
公開鍵をVPSにコピーしたにも関わらず接続できない原因の多くは、**秘密鍵や.sshディレクトリのパーミッション設定ミス**です。特にMacやLinuxから接続する場合は厳密な権限が求められます。
正しいパーミッション設定
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_rsa
また、ユーザーのホームディレクトリそのものにも注意が必要です。ホームディレクトリがグローバルに読み取り可能になっていると、接続が拒否されることがあります。
ディレクトリ権限も確認
$ chmod 755 /home/username
どうしても接続できない場合は、 ssh -v オプションで詳細ログを出力し、原因を特定しましょう。
接続ログの出力
$ ssh -v -i ~/.ssh/id_rsa bepro@xxx.xxx.xxx.xxx
鍵が正しい場所にあり、権限も適切であれば、問題なく接続できるはずです。
すぐに使える高速レンタルサーバー【ConoHa VPS】
完全無料!ConoHa VPSなら安心して始められる!
コストを抑えてVPSを始めたい人にピッタリのサービスです!
はじめての開発でも扱いやすい管理画面&わかりやすい料金体系で、迷わずスタートできます。
こんな方におすすめ!
✅ 初期費用ゼロ・月額上限ありで安心!
✅ 初心者でも扱いやすい直感的なUI!
✅ 1時間単位の課金で使った分だけ支払い!
✅ APIやスナップショット機能も豊富!
✅ 学習〜商用運用まで幅広く対応!