VPS入手後の最初の1時間:裸機から安全・使える状態までの完全初期化ガイド(OpenClawをより安全にしよう)
買いたての VPS は、まるで鍵のかかっていないドアみたいなもの。世界中のスクリプトキディたちがノックしまくってます。この記事じゃ、そのドアにしっかり鍵をかける方法を案内するよ。君の「ザリガニ」が外に脱走してウロチョロしないようにね。
0、はじめに
VPS を買って、ワクワクしながら IP と root パスワードを受け取った。で、次はどうする?
多くの人がやりがちなのは:すぐにソフトを入れ始めて、プロジェクトをデプロイしちゃうこと。
これは危険な習慣だよ。
君の VPS にはパブリック IP が付いてる。つまり、世界中の誰でも接続を試みることができるってこと。しかもデフォルト設定のままだと:
- ポートは誰でも見える 22 番が開放っきり
- ユーザー名は誰もが知ってる root
- 君を守っているのはパスワードたった一つ
毎日、無数の自動化スクリプトが IP 範囲をスキャンして、よくあるパスワードでブルートフォース攻撃を仕掛けてる。君のサーバーは、オンラインになったその瞬間から、すでに攻撃されてるんだ。
だから、VPS を手に入れてから最初にやるべきことは、ソフトを入れることじゃなく、セキュリティの初期設定なんだよ。
1、目指すゴール
この記事の目標は:
- ✅ セキュアなリモートアクセスを確立:SSH鍵ログイン+デフォルト以外のポートに変更
- ✅ 一般ユーザーを作成:rootの直接使用を避ける
- ✅ ファイアウォールを設定:必要なポートだけ開放
- ✅ ネットワーク加速を有効化:BBRでネットワークを爆速化
- ✅ ブルートフォース攻撃を防止:fail2banで悪意あるIPを自動でブロック
ここまで済ませれば、VPSの基盤はバッチリ。あとは安心していろんなサービスをデプロイできるよ。
2、計画と思考
なぜこの設定をするの?
買いたてのVPSは、引き渡されたばかりのスケルトンの部屋みたいなもの。
| デフォルト状態 | リスク | 僕たちの解決策 |
|---|---|---|
| rootユーザーで直接ログイン | 権限が強すぎて誤操作のリスクが高い | 一般ユーザー作成 + sudo |
| パスワードログイン | ブルートフォース攻撃の標的に | SSH鍵ログイン |
| デフォルトの22番ポート | スキャナーに真っ先に狙われる | 非標準ポートに変更 |
| ファイアウォール無効 | 全ポートが外部に公開される | UFWで必要なポートだけ許可 |
| ネイティブネットワーク | パケロス率高、レイテンシ大 | BBR輻輳制御アルゴリズム |
全体の流れ

この順番で作業を進めていこう。各ステップで「なぜこれをするのか」も解説していくよ。
3、作業手順
3.1 初回ログインとシステム更新
サーバーIPを確認
VPSを契約すると、プロバイダーから次の情報が届くよ:
- IP アドレス:たとえば
192.168.1.100 - ポート:通常は
22(プロバイダによっては別のポートに変更されていることもあります) - ユーザー名:通常は
root - パスワード:ランダムに生成された文字列

SSH 接続
Mac / Linux ユーザー:ターミナルを開いて、そのまま以下を入力:
1 | ssh root@你的服务器IP |
Windows ユーザー:
- Windows 10/11 には OpenSSH が標準で入っているので、PowerShell や CMD でそのまま上記のコマンドが使えます
- あるいは Termius や MobaXterm などのツールを使うのもアリです
初めて接続すると、フィンガープリントの確認プロンプトが出ます:
1 | The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established. |
これは「このマシンは知らないけど、本当に接続していい?」と聞いてきてるんです。
yes と入力して Enter。続いてパスワードを入力します(入力中は何も表示されませんが、これは正常なセキュリティ仕様です)、Enter を押します。

こんな感じの表示が出たら、ログイン成功です:
1 | Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.x.x-x-generic x86_64) |
💡 なぜフィンガープリントを確認するの?
これは「中間者攻撃(Man-in-the-Middle Attack)」を防ぐためです。初回接続時にサーバーのフィンガープリントを記録しておき、以降の接続でフィンガープリントが変わっていたら、誰かがあなたのサーバーを装っている可能性があります。

まずはサーバーの様子を知ろう
ログインできたら、まずはこのマシンの基本情報をチェックしておきましょう:
1 | # 查看系统版本 |

この情報は後でトラブルシューティングするときに役立つので、頭の片隅に置いておいてくださいね。
システムをアップデートする
サーバーの情報を確認したら、最初にやるべきことはシステムのアップデートです。新しいサーバーのOSイメージは数ヶ月前のものかもしれないし、その間にセキュリティパッチがリリースされている可能性がありますからね:
1 | # 更新软件包列表 + 升级所有软件 + 清理 |
パラメーターの解説:
apt update:パッケージインデックスを更新apt full-upgrade:カーネルを含むすべてのソフトをアップグレード-y:自動で「yes」と答えるので、手動で入力する必要なしapt autoremove:不要になった依存パッケージを削除apt autoclean:ダウンロードしたパッケージのキャッシュをクリーンアップ

⏱️ このステップは更新量によっては数分かかることがあります。途中で確認を求められることもありますが、基本的には画面の指示に従えば大丈夫ですよ。
再起動が必要か確認する
カーネルのアップデート後は、反映のために再起動が必要になることがよくあります:
1 | # 检查是否需要重启 |

もし再起動が必要と表示されたら:
1 | reboot |
再起動後は、再度 SSH 接続し直す必要があります。
よく使うツールをインストールする
1 | apt install -y sudo curl wget git vim htop tree unzip net-tools ufw fail2ban neofetch |
これらのツールは何に使うもの?:
| ツール | 用途 | |
|---|---|---|
sudo |
一般ユーザーに管理者コマンドを実行させる | |
curl / wget |
ファイルをダウンロード | |
git |
バージョン管理 | |
vim |
テキストエディタ | |
htop |
見やすいプロセスモニター | |
tree |
ディレクトリ構造をツリー表示 | |
net-tools |
ネットワークユーティリティ(ifconfig、netstat など) | |
ufw |
シンプルで使いやすいファイアウォール | |
fail2ban |
ブルートフォース攻撃対策 | |
neofetch |
システム情報をオシャレに表示 | |
![]() |
3.2 root以外のユーザーを作成する
なぜ root で直接作業しないのか?
root ユーザーは権限が強すぎるので、ちょっと手が滑って rm -rf / と打っただけで全部吹き飛びます。普段の作業は一般ユーザーで行い、管理者権限が必要なときだけ sudo を使うのが基本ですよ。
龙虾(openclaw)はモンスターみたいなものだし、root を渡すなんて恐れ多いですよね?
ユーザーを作成する
1 | # 创建用户(把 ittinker 换成你想要的用户名) |
パスワードや各種情報の入力を求められるので、画面の指示に従って設定します:
1 | New password: # 输入密码(不会显示) |

sudo 権限を付与する
1 | # 把用户加入 sudo 组, ittinker 换成你自己上面创建的那个用户 |
確認してみよう:
1 | # 切换到新用户 ittinker 换成你自己上面创建的那个用户 |
出力が root になっていれば、sudo の設定はバッチリ成功です。

💡 ちょっとしたコツ
exitと入力すれば root ユーザーに戻れます。この後の設定作業は引き続き root で進めて、すべて終わったら一般ユーザーに切り替えましょう。
3.3 SSH 鍵認証を設定する
鍵認証 vs パスワード認証

鍵認証はパスワード認証よりずっと安全です:
- パスワードは総当たり攻撃で破られるリスクがありますが、鍵ならほぼ不可能です
- 毎回パスワードを入力しなくていいので、圧倒的にラクです
- 仮にパスワードが漏洩しても、秘密鍵がなければログインできません
ステップ1:ローカルで鍵ペアを生成する
自分のPC(サーバーじゃないよ)で実行しよう:
1 | # 生成 ED25519 密钥(推荐,更安全更快) |
こんな感じで聞かれる:
1 | Enter file in which to save the key (/Users/你/.ssh/id_ed25519): |
そのまま Enter を押してデフォルトのパスで OK。ここでは ./ittinker を使ってるけど、要するに現在のディレクトリに ittinker って名前で保存するってこと。
1 | Enter passphrase (empty for no passphrase): |
パスフレーズを設定してワンポイント保護を追加してもいいし、そのまま Enter で空欄のままでも大丈夫。

生成が完了したら、~/.ssh/ ディレクトリに2つのファイルができてるはず(以下はデフォルトのファイル名。先ほど Enter を押した場合はこうなるよ):
id_ed25519:秘密鍵。絶対に漏らしちゃダメ!id_ed25519.pub:公開鍵。これはサーバーにアップロードする
💡 ed25519 vs RSA
ed25519は現時点で推奨されるアルゴリズム。従来の RSA より安全で、鍵も短い。もしお使いのシステムが古くて対応していない場合は、ssh-keygen -t rsa -b 4096を使えば OK。
細かい話だけど、ed25519 で生成した鍵は結構小さい。一方 RSA はファイルがでかい。AI に聞いてみたら、サイズは関係なくてアルゴリズムの違いらしい。
ステップ2:公開鍵をサーバーにアップロードする
方法 A:ssh-copy-id を使う(おすすめ)
1 | # 在你的电脑上执行 |
パスワードを入力すれば、公開鍵が自動でサーバーにコピーされるよ。

方法 B:手動でコピーする
もし ssh-copy-id が使えない場合は、手動でやりましょう:
1 | # 1. 在你的电脑上,查看公钥内容 |
出力された内容(ssh-ed25519 から始まる長い文字列)をコピーします。
1 | # 2. 在服务器上,为新用户创建 .ssh 目录, ittinker 换成你刚刚创建的用户名 |
⚠️ 権限は超重要!
SSH はファイルの権限に厳格です:
.sshディレクトリ:700(ユーザー本人のみアクセス可能)authorized_keysファイル:600(ユーザー本人のみ読み書き可能)権限が間違っていると、SSH は鍵を使ったログインを拒否します。
ステップ3:鍵ログインをテストする
新しいターミナルウィンドウを開き(元のウィンドウは念のため閉じずに残しておきましょう。設定を間違えた時の保険になります)、鍵ログインをテストしてみましょう:
1 | ssh ittinker@你的服务器IP |
パスワードを入力せずにログインできたら、鍵の設定は成功です!🎉
(秘密鍵にパスフレーズを設定している場合は、秘密鍵のパスワード入力を求められますが、これは正常な動作です)

ここで -i パラメータを追加しているのは、今回の鍵がデフォルトのパスではなく現在のパスに置かれているためです。指定しないと、システムはデフォルトの鍵を使おうとします。
3.4 SSHのセキュリティ強化
鍵ログインが使えるようになったので、次は SSH をさらに堅牢にしていきましょう:
- デフォルトポートの変更(スキャン対策)
- パスワードログインの無効化
- root の直接ログイン禁止
SSH設定ファイルを編集する
1 | # 备份原配置 |

以下の設定を見つけて変更しよう(コメントアウトされている場合は、先頭の # を削除してね):
1 | # 修改端口(选一个 1024-65535 之间的数字) |

保存して終了しよう(ctrl + o)。
Nanoでの保存は ctrl + o。ファイル名を聞かれたらそのまま Enter を押せばOK。終了は ctrl + x だよ。
SSHサービスを再起動する
1 | systemctl restart sshd.service |
⚠️ 重要な注意点!
今開いているターミナルは閉じないで! まずは新しいウィンドウを開いて、新しい設定でログインできるかテストしてみよう:
1 ssh -p 22000 yourname@你的服务器IPログインできたら、古いウィンドウを閉じてOK。もしうまくログインできなくても、古いウィンドウで設定を修正できるから安心してね。
もし軽量サーバーを借りているなら、このポートは変更できない可能性が高いよ。従来のECSなら変更できるから、その辺は要注意ね。
3.5 UFWファイアウォールの設定

UFW(Uncomplicated Firewall)はUbuntuのデフォルトファイアウォールツール。シンプルだけど強力なんだ。
基本設定
1 | # 设置默认策略:拒绝所有入站,允许所有出站 |
ファイアウォールを有効にする
1 | ufw enable |
こんなプロンプトが出るよ:
1 | Command may disrupt existing ssh connections. Proceed with operation (y|n)? |
y と入力して確認しよう。
ステータスの確認
1 | ufw status verbose |

23022は私の打ち間違いです。各自の環境に合わせて適宜読み替えてくださいね。
出力はこんな感じ:
1 | Status: active |
よく使うコマンドチートシート
1 | # 查看状态 |
3.6 BBRアクセラレーションを有効にする
BBR(Bottleneck Bandwidth and Round-trip propagation time)は、Googleが開発したTCP輻輳制御アルゴリズムで、ネットワークパフォーマンスを大幅に向上させることができます。
ワンクリックで有効化
1 | # 添加 BBR 配置 |
有効になったか確認する
1 | # 查看当前拥塞控制算法 |
出力はこうなればOK:
1 | net.ipv4.tcp_congestion_control = bbr |
1 | # 确认 BBR 模块已加载 |
出力はこんな感じ:
1 | tcp_bbr 20480 3 |
💡 BBRの効果
BBRを有効にすると、特にネットワークが不安定だったりレイテンシが高い環境下で、こんな違いをはっきり実感できるはず:
- ダウンロード速度が速くなる
- SSH操作がもっさりしなくなる
- Webページの読み込みが速くなる

3.7 fail2banでブルートフォース攻撃を防ぐ設定
fail2banはログを監視し、何度もログインに失敗したIPを見つけると自動でアクセスをブロックしてくれます。
基本設定
1 | # 复制默认配置(不要直接修改 jail.conf) |
[sshd] の部分を見つけて、以下の設定になっているか確認してください:
1 | [sshd] |

サービスを起動
1 | # 重启 fail2ban |
状態を確認
1 | # 查看 fail2ban 状态 |

出力はこんな感じになります:
1 | Status for the jail: sshd |
よく使うコマンド
1 | # 手动封禁 IP |
3.8 [オプション] SSH Config で複数サーバーを管理
サーバーが複数あると、毎回 ssh -p 22000 user@ip を打つのが面倒ですよね。そんなときは SSH Config を使ってスッキリさせましょう。
設定ファイル
自分のローカルPC で ~/.ssh/config を編集します:
1 | vim ~/.ssh/config |
設定を追加します:
1 | # 第一台服务器 |
使い方
これでエイリアスを使って直接接続できます:
1 | # 连接第一台服务器 |
IP、ポート、ユーザー名を覚えておく手間がなくなりますよ!
3.9 [オプション] Cloudflare からのアクセスのみ許可
もしサイトが完全に Cloudflare の背後で動いているなら、80/443 ポートへのアクセスを Cloudflare の IP だけに限定して、セキュリティを強化できます。
⚠️ 注意:この設定を行うには、ドメインがすでに Cloudflare CDN に接続されている必要があります。
自動設定スクリプト
1 | # 下载脚本 |
このスクリプトがやること:
- Cloudflare の公式から最新の IP レンジを取得する
- UFW のルールを追加して、これらの IP だけに 80/443 ポートへのアクセスを許可する
- UFW をリロードする
自動更新をスケジュールする
Cloudflare の IP レンジは変わる可能性があるので、毎週自動で更新されるように設定しておこう:
1 | # 添加 cron 任务(每周一凌晨执行) |
3.10 タイムゾーンの設定
デフォルトのタイムゾーンは UTC になっているはず。ログを見るときのために、自分のタイムゾーンに変更しておこう:
1 | # 查看当前时区 |

3.11 [オプション] 自動セキュリティアップデートの設定
システムにセキュリティパッチを自動でインストールさせておけば、いちいち手動で作業する手間が省ける:
1 | # 安装自动更新工具 |
「Yes」を選んで自動更新を有効にしよう。
💡 この機能はセキュリティアップデートだけを自動でインストールしてくれる。新しいメジャーバージョンへのアップグレードは行わないから、比較的安全だ。
4. まとめ
初期化チェックリスト
以上の設定が終わったら、このリストで最終チェックしてみよう:
| チェック項目 | コマンド | 期待される結果 |
|---|---|---|
| システムは最新か | apt update && apt list --upgradable |
アップグレード可能なパッケージなし |
| 一般ユーザーで sudo 可能か | sudo whoami |
root と出力される |
| 鍵認証ログインは正常か | ssh yourname@ip -p port |
パスワードなしでログインできる |
| パスワードログインは無効化されているか | grep PasswordAuth /etc/ssh/sshd_config |
PasswordAuthentication no |
| SSHポートは変更済みか | grep Port /etc/ssh/sshd_config |
自分で設定したポート |
| ファイアウォールは有効か | ufw status |
Status: active |
| BBRは有効か | sysctl net.ipv4.tcp_congestion_control |
= bbr |
| fail2banは稼働中か | systemctl status fail2ban |
active (running) |
| タイムゾーンは設定済みか | timedatectl |
Asia/Shanghai または自分のタイムゾーン |
| ローカルの SSH Config | cat ~/.ssh/config |
サーバーのエイリアスが設定済み |
主要ファイルの場所
1 | /etc/ssh/sshd_config # SSH 服务端配置 |
セキュリティのベストプラクティス
- システムを定期的にアップデートする:
apt update && apt upgrade - ログインログを定期的にチェックする:
lastb(ログイン失敗)、last(ログイン成功) - fail2banのブロック状況をこまめに確認する
- 重要な設定ファイルは変更前に必ずバックアップを取る
5、トラブルシューティング
Q1:鍵認証ログインに失敗し、パスワードを求められる?
考えられる原因:
-
パーミッションの問題(一番よくあるやつ)
1
2
3# 检查并修复权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys -
公開鍵のコピーがうまくいっていない
1
2
3# 检查 authorized_keys 内容
cat ~/.ssh/authorized_keys
# 应该是一行完整的公钥,以 ssh-ed25519 或 ssh-rsa 开头 -
SELinuxの干渉(CentOS/RHEL系の場合)
1
restorecon -Rv ~/.ssh
Q2:ポートを変えたら繋がらなくなった?
トラブルシューティング手順:
-
新しいポートがファイアウォールで開放されているか確認:
1
ufw status | grep 你的端口
-
SSHの設定が正しいか確認:
1
grep Port /etc/ssh/sshd_config
-
SSHサービスがちゃんと動いているか確認:
1
systemctl status sshd
-
それでも全く繋がらない場合は、クラウド業者のVNC/コンソールからログインして修復しよう。
Q2.5:ポート変更が全然反映されない?(クラウド業者の軽量サーバーの場合)
現象:/etc/ssh/sshd_configを変更してサービスを再起動しても、22番ポートが生き残ったままで、新しいポートが反映されていない。
診断方法:
bash
1 | # 查看是谁在监听 22 端口 |
もし出力がこんな感じだったら:
1 | tcp 0 0.0.0.0:22 0.0.0.0:* LISTEN 1/init |
これは、22番ポートをリッスンしているのが init(PID 1)であって、sshd プロセスではないってことだよ。
原因:一部のクラウド事業者が提供する「軽量アプリケーションサーバー」や「コンテナインスタンス」では、SSH がプラットフォームレイヤーでプロキシされているため、サーバー内部の sshd 設定が反映されません。
解決策:
| インスタンスタイプ | SSH ポートの変更方法 |
|---|---|
| 従来の ECS | sshd_config を変更 ✅ |
| 軽量サーバー | クラウドのコンソールから変更する必要があるか、そもそも対応していない |
| コンテナインスタンス | 基本的に変更不可 |
お使いのインスタンスでポート変更に対応していない場合は、他のセキュリティ対策がより重要になります:
- ✅ 一般ユーザーの作成 + root ログインの無効化
- ✅ SSH 鍵認証の利用 + パスワードログインの無効化
- ✅ fail2ban によるブルートフォース攻撃対策
これらをしっかりやっておけば、セキュリティレベルは依然として高く保てますよ。
Q3:fail2ban で自分をブロックしちゃった?
1 | # 用 VNC 登录后解封 |
Q4:UFW を有効化したらサイトにアクセスできなくなった?
1 | # 检查 80/443 是否开放 |
Q5:コマンドを実行すると sudo が見つからないって出る?
Debian の最小構成インストールだと sudo が入っていないことがあるので、root でインストールしましょう:
1 | apt install sudo |
6、ワンクリック初期化スクリプト(慣れてきたら使おう)
上記の手順にすっかり慣れたら、このスクリプトでサクッと初期化できます。
⚠️ 注意:スクリプトを実行する前に、SSH 公開鍵の準備ができているか確認しておこうね。
1 |
|
7、ここまでやると、セキュリティはどれくらい上がった?
| 手順 | やったこと | なぜ重要か |
|---|---|---|
| システム更新 | 最新パッチをインストール | 既知の脆弱性を修正 |
| 新規ユーザー作成 | root を直接使わないように | 誤操作リスクを減らす |
| SSH 鍵 | パスワードの代わりに鍵を使う | 総当たり攻撃で破られない |
| ポート変更 | デフォルトの 22 を避ける | スキャンで見つかる確率を下げる |
| パスワード無効化 | 鍵ログインのみ許可 | パスワード攻撃を完全に防ぐ |
| root 無効化 | root で直接ログイン不可 | 攻撃の難易度を上げる |
| UFW ファイアウォール | 必要なポートだけ開放 | 攻撃対象領域を減らす |
| BBR 加速 | ネットワーク性能を最適化 | アクセス速度を向上 |
| fail2ban | 悪意ある IP を自動でブロック | 執拗な攻撃を防ぐ |
ここまでやれば、あなたのサーバーのセキュリティは VPS ユーザーの 90% を超えたことになるよ。
次回予告
次回は SSH 鍵ログイン設定クイックリファレンス を解説していくよ。こんな内容をもう少し詳しく紹介するね:
- OS 別の鍵生成方法
|複数鍵の管理 - SSH Agent の設定
- 主要な SSH クライアントの設定
この記事の最終更新:2026年1月
独立開発者ツールボックス・シリーズ、ぜひフォローしてね!




