n8nやClaude Code、Dify、Ollamaなど、VPSでAIツールを動かす手順記事はどれも「VPSにSSH接続できる状態」から始まります。ところが、パスワード認証をやめて鍵認証に切り替え、最低限のファイアウォールまで設定した「安全に作業できる状態」を自分で作れる初心者は多くありません。この記事は共通の土台だけを切り出し、手を動かしながら30分以内で作る手順です。
本記事の実測は、VPS実機ではなくローカルPC上のDockerコンテナ(Ubuntu 22.04・メモリ1GB/CPU1相当に制限)で行っています。sshd・ufw・fail2banの挙動は実機と同じUbuntuパッケージで確認していますが、実際のインターネット越しの到達性や画面操作は実測範囲外です。
この記事で解決すること(AIツール別記事に入る前の共通土台)
この記事を最後まで進めると、次の状態になります。

- パスワード認証を無効化した鍵認証だけのSSH接続に切り替えられている
- 作業用の一般ユーザーで日常作業ができる
- ufw(Ubuntuに標準で使えるファイアウォールの簡易操作ツール)で、必要なポート以外を閉じている
- n8n・Claude Code・Dify・Ollamaなど、目的のAIツール記事にそのまま進める
n8nのインストール手順やDifyのDocker Compose設定など、個別ツールの話はここでは扱いません。導入記事に進む前の、共通の土台作りだけに絞っています。
迷ったらこれ:最小構成(SSH鍵認証+ポート変更+ufw)
初めてVPSでSSHの初期設定をするなら、次の3点を最小構成として押さえてください。

- パスワード認証を止めて、SSH鍵認証だけでログインできるようにする
- SSHのポート番号を22番から変更する
- ufwで、変更後のSSHポート以外をすべて閉じる
実測では、パッケージ導入からこの3点まで通して約11分で終わりました(検証環境での計測。VPS実機では回線状況やコンソールの応答速度で前後します)。
SSH接続の初期設定に自信がないままVPSでAIツールを動かしたい人は、まずシンVPSを契約し、この最小構成から始めるのがおすすめです。大容量メモリ1GBプランは月額451円〜(36ヶ月契約時・2026-09-01の料金改定後・2026-09-12確認)で、今回実測した最小構成をそのまま試すのに十分な価格帯です。OS(Ubuntu)レベルの手順のため、パネル機能の違いに関わらずどのVPS事業者でも同じように進められます。契約が終わったら、最初の5分でやることは1つだけです。ローカルのターミナルでssh-keygenを実行し、鍵ペアを1組作ってください。
合わない人: すでに別のVPSで同じ設定を済ませている人、社内のセキュリティポリシーで鍵の管理方法が指定されている人は、自社のルールを優先してください。
最短手順(6ステップ・所要時間つき)

ステップ1: 初回接続とOSの初期状態を確認する
VPS契約直後の接続方法は事業者によって異なります(コンソールからのログイン、初期パスワードの通知など)。この部分は事業者の案内に従ってください(この記事では実測していません)。
知っておくと安心なのは、OS標準の状態では、rootへのパスワードでのSSHログインは最初から拒否されるという点です。検証環境で素のUbuntu 22.04 + OpenSSHにパスワード認証を試すと、設定を何も変えていない時点で拒否されました。「VPSは最初rootのパスワードでSSHログインできる」という前提のガイドも見かけますが、それができる場合はVPS事業者側がイメージの設定を変更しているケースです。OS単体の初期状態とは分けて考えてください。
ステップ2: 必要なパッケージを導入する(実測84秒)
SSHサーバー・ufw・fail2banをまとめて導入します。
apt-get install -y openssh-server ufw fail2ban
検証環境での実測では84秒で完了しました(ネットワークやキャッシュの状態で前後)。導入直後に実効中の設定を確認すると、ポートは22番、rootへのパスワード認証は拒否、公開鍵認証は許可という状態がすでに効いていました。設定ファイルの該当行がコメントアウトのままでも、Ubuntuパッケージのデフォルト値がその時点で有効です。
ステップ3: 作業用ユーザーを作る
root以外の作業用ユーザーを1つ作ります。
adduser labwork
検証環境では自動化オプション付きで数秒で作成できました(通常は対話形式でパスワード設定を求められます)。
管理者権限(sudo)の付与は、この検証では実施していません(未実測)。一般的にはusermod -aG sudo labworkで付与しますが、-aを付け忘れると既存の所属グループから外れる点に注意してください。-G単体は上書き、-aGは追加という違いです。事業者のイメージによってはsudoコマンド自体が入っていないこともあるため、実行前にwhich sudoで存在を確認しておくと安心です。
ステップ4: SSH鍵を作り、鍵認証だけに切り替える
作業用ユーザーで鍵ペアを作成します。
ssh-keygen
引数を付けずに実行すると、Ed25519という形式の鍵が作られます。検証環境では秘密鍵ファイル411バイト、公開鍵はssh-ed25519 AAAA...で始まる1行のテキストとして生成されました。
続いてSSHの動作を決める設定ファイル/etc/ssh/sshd_configを編集し、次の3行を設定します(ポート番号は22番以外なら任意。ここでは例として2222を使用)。
Port 2222
PermitRootLogin no
PasswordAuthentication no
設定後は文法エラーがないか確認してからsshdを再起動します。
公開鍵をサーバー側のauthorized_keys(ログインを許可する公開鍵の一覧ファイル)に登録し、実際に鍵だけでログインが成功する場面の確認は、この検証では行っていません(未実測)。登録時は権限に注意してください。~/.sshは700、authorized_keysは600という権限が必要です。他のユーザーが書き込める状態だと、sshdはそのファイルの利用自体を拒否します。
ステップ5: 接続を確認する(実測)
設定変更後、ネットワーク越しに2つのポートへ接続を試しました。
- 変更前のポート(22番): 応答なし(バナーの取得に失敗)
- 変更後のポート(2222番): SSHのバナーは返るが、パスワードで認証しようとすると「許可されている認証方式は公開鍵のみ」という趣旨のメッセージで即座に拒否される
設定した内容が、ネットワーク越しに反映されていることを確認できました。
ステップ6: ufwで必要なポート以外を閉じる(実測)
最後にufwを有効化します。
ufw default deny incoming
ufw allow 2222/tcp
ufw enable
検証環境ではDocker特有の権限制約でひと手間必要でしたが(VPS実機にはこの制約はありません)、設定後は状態確認で「有効・受信は拒否・送信は許可」と表示され、変更後のSSHポート以外が閉じていることを確認できました。
ここまで6ステップ、実測で合計約11分でした。予算に見込んでいた30分以内に十分収まります。
SSH接続の初期設定に自信がないままVPSを契約するのが不安な人は、シンVPSでこの6ステップをそのまま試すのがおすすめです。大容量メモリ1GBプランは月額451円〜(36ヶ月契約時・2026-09-01改定後・2026-09-12確認)で、この記事の検証と同じ最小構成を試すのに十分な価格帯です。ここまでの手順はOSレベルの設定なので、契約するVPS事業者を問わず同じように再現できます。
エディタから直接編集する:VSCode Remote-SSHで接続する
ここまでの設定が終われば、ローカルのVSCodeから直接VPS上のファイルを編集できる「Remote-SSH」拡張機能(VSCodeからリモートサーバーへSSH経由で接続する公式機能)が使えます。公式の前提条件は、ローカル側がOpenSSH互換クライアント必須、リモート側(VPS側)がUbuntu 16.04以降などglibcベースのLinux(Alpine Linuxのような軽量ディストリビューションは非対応)でメモリは最低1GB・推奨2GB以上です。

接続設定は、ローカルの~/.ssh/configに次の形式で追記します。
Host myvps
HostName <VPSのIPアドレス>
User labwork
Port 2222
IdentityFile ~/.ssh/<秘密鍵のファイル名>
VSCodeの拡張機能検索から「Remote - SSH」をインストールし、左下の接続アイコンからmyvpsを選ぶと接続が始まります。
この記事の検証では、鍵認証でのログイン成立とVSCodeの接続確立までは確認していません(未実測)。設定手順は公式ドキュメントの記載に基づきます。実際に試す際は、まず通常のターミナルからssh myvpsでログインできることを先に確認してから、VSCode側を試すと切り分けやすいはずです。
VPS接続の確認が取れたら、次のステップは目的のツール(n8n・Claude Code・Difyなど)をVPS上でセットアップします。その中でも、Claude CodeをVPSに常駐させて自動化タスクを実行したい場合は、Claude CodeをVPSに常駐させる実測ガイドで具体的な手順を確認できます。
VPS選びの最低ライン(メモリ・OS・リージョン)
VPSを選ぶ段階で押さえておきたい基準は次の3つです。

メモリ: VSCode Remote-SSHの前提条件は最低1GB、推奨2GB以上です。AIツールを併用する場合は各ツール記事の要件を優先してください。
OS: Remote-SSHはglibcベースのLinuxが対象で、Alpine Linuxのような軽量ディストリビューションでは動作しません。Ubuntuの長期サポート版(LTS)が無難です。ただし選べるバージョンで必要メモリが変わる事業者もあります。一例として、シンVPSでは通常のUbuntu 22.04・24.04は1GB以上、最新の26.04は2GB以上のプランが条件です(2026-09-12確認)。契約前にOSとプランの対応表を確認してください。
予算感: メモリ1GB程度のプランなら月500円前後から契約できる事業者もあります(例: シンVPSの大容量メモリ1GBプランは月額451円〜、2026-09-01の料金改定後・2026-09-12確認)。価格は事業者・契約期間で変わるので最新のプラン一覧で確認してください。
リージョン(データセンターの所在地): 事業者によって国内・海外の選択肢や都市名の公開有無が異なります。接続する場所に近いリージョンがあるかも、体感速度に影響するので確認しておきましょう。
よくある失敗トップ4(SSH接続できない/公開鍵の権限エラー/自分を締め出すufw/ポート変更後に繋がらない)
実際に手を動かすと、次の4つでつまずきやすいところです。

① SSH接続できなくなる(ポート変更直後) ポートを変更したのにファイアウォール側で新しいポートを開け忘れると、接続がタイムアウトします。ufwの設定を先に済ませてからsshdを再起動する順番を意識してください。
② 公開鍵の権限エラー
~/.sshは700、authorized_keysは600という権限が必要です。他のユーザーが書き込める状態だと、sshdはそのファイルの利用を拒否します。
③ ufwで自分を締め出す 検証環境で、許可済みのポートにufwで拒否設定を試すと、応答していた接続が即座にタイムアウトへ変わりました。許可設定に戻すと即座に復旧します。設定変更は、別経路のアクセス手段を確保した状態で行ってください。
④ ポート変更後に繋がらない
sshd_configのPortを書き換えても、ufw側で新しい番号を許可していないと外部からは届きません。「設定変更」と「ufwの許可」はセットで行うと覚えておくと迷いません。
もう一段強くする:rootログイン禁止とfail2ban
最小構成に加え、次の2つをやると更に安全になります。

rootログインの完全禁止
OS標準の状態でも、rootへのパスワードでのSSHログインは拒否されます。ただし鍵認証でのroot接続はデフォルトで許可されたままです。PermitRootLogin noを明示的に設定すると、鍵の有無に関わらずroot宛の接続そのものを塞げます。最短手順のステップ4で、この設定もあわせて済ませています。
fail2banで総当たり攻撃を自動ブロック fail2banは、ログイン失敗を繰り返す相手を自動でブロックする仕組みです。導入しただけでは、SSHを対象にしたジェイル(監視対象の単位)はデフォルトで無効です(既定値は10分間に5回失敗でブロック、ブロック時間10分)。有効にするには設定ファイルで明示的に有効化します。
検証環境では確認を早く終えるため、閾値を3回失敗・10分間・ブロック5分に下げて確認しました。存在しないユーザー名で10回連続ログインを試すと、6回失敗した時点で1件がブロックされ、以降の接続は一切応答がなくなりました。検知からブロックまで実際に動くことを確認できています。
次の一歩:目的別に進む記事
ここまでで、AIツール別の記事に進む共通の土台ができました。n8nやDify、Ollamaが追加のポートを開ける必要がある場合は、それぞれの導入記事で扱います。本記事はSSHで安全に接続できる状態を作るところまでが対象です。

- n8nを動かしたい → n8nをVPSでセルフホストする最短手順
- Claude Codeを動かしたい → Claude CodeをVPSに常駐させる実測ガイド
- Difyを動かしたい → DifyをVPSにセルフホスト|料金分岐点を実測
- ローカルLLMを動かしたい → VPS Ollama実測|メモリ選びと外部公開
今日やることは1つです。シンVPSを1台契約し、この記事の最小構成だけを今日中に済ませてください。大容量メモリ1GBプランは月額451円〜(36ヶ月契約時・2026-09-01改定後・2026-09-12確認)、設定作業そのものは実測で合計11分でした。
もっと詳しく:SSH鍵の管理・複数VPSの使い分け
SSH鍵の管理
複数のVPSを使い分けるなら、VPSごとに別々の鍵ペアを作り、~/.ssh/configに接続先を追加していくと管理しやすくなります。1つの鍵を使い回すと、1つのVPSで鍵が漏れたとき他のVPSまで影響します。

パネルからの鍵登録機能について VPS事業者によっては、コントロールパネルから公開鍵を登録する機能があります(シンVPSにもこの機能があります)。この記事で説明したのはOS(Ubuntu)レベルでの切替で、パネル機能の有無に関わらずどの事業者でも通用します。パネル機能があれば、コマンド操作の一部を省略できます。
ログの監視
logwatchは、ログを定期的にまとめて確認できるログ監視ツールです。詳細度や通知先メールアドレスなどをオプションで指定できます。運用を始めてから導入を検討する項目で、この記事では導入・実行の確認までは行っていません。

