5/6公開【ConoHa VPSサーバーにSSHでリモート接続する方法】〜初心者向けユーザー作成からSSH接続まで〜

【ConoHa VPSサーバーにSSHでリモート接続する方法】〜初心者向けユーザー作成からSSH接続まで〜

この度、サーバーの勉強目的でConoHa VPSを契約しました。つきましては、せっかくなので簡単なネットワーク対戦型ゲームを配信してみようということでその方法や困ったことなどをブログ記事で紹介していこうと思います。

本記事ではSSH接続を中心とした初期設定の方法の解説までですが、初心者向けに誰でもできるように丁寧に解説していますので、ぜひ最後までご覧になってください。

免責事項について

本記事では、Linux系OSのディストリビューションの1つである「Ubuntu」のバージョン24.04で解説しています。OSおよびバージョンが異なる場合は操作等が異なる部分があるかもしれませんので、あらかじめご承知おきください。
また、設定ややり方については筆者が行った方法を解説していますが、実際にはこれ以外にも様々な方法があることにご留意ください。

Ubuntuバージョン24.4
目次

契約方法についてはコチラ

契約方法や金額などはいろいろ変わると思うので公式サイトのサポートページを直接ご確認ください。

目標はSSHでリモート接続

「SSH」とは?

SSH(Secure Shell)はインターネット上のサーバーに安全に接続するために以下のセキュリティ要件を備えた通信プロトコルです。
・「サーバーが本物であるか」(真正性)
・「クライアントが本物であるか」(真正性)
・「通信内容の暗号化」(機密性)

SSHでリモート接続するまでのステップ

  1. 管理画面でコンソールを操作する
  2. 一般ユーザーを作成する
  3. セキュリティグループを設定する
  4. SSHを設定する
  5. rootユーザーでのログインを禁止する
  6. OpenSSHを再起動する
  7. 公開鍵(パブリックキー)認証方式でSSH接続を試す

管理画面でコンソールを操作する

ConoHa VPSでアクセスできるコンソールは、「VNCコンソール」「シリアルコンソール」の2種類です。

異なる機能VNCコンソールシリアルコンソール
対応OSすべてのOSで利用可能一部OSは非対応?
コピー&ペーストブラウザVNCビューアのためコピペ非対応クリップボードから貼り付け可能

VNCコンソールは便利ですが、私の環境だとマウスカーソルがうまくフォーカスされず使いづらいので、シリアルコンソールで解説します。

STEP
[コンソール]-[シリアル]でコンソールにアクセスする
ConoHa VPS管理画面[コンソール]-[シリアル]
STEP
rootでログインする
  1. まず「root」と入力
  2. 次に初期設定したパスワードを入力
ConoHa VPS管理画面のシリアルコンソール
「root」とは?

rootユーザーとはすべての権限を持つユーザーのことで、WindowsにおけるAdministratorのことです。

通常の「Ubuntu」(読:ウブントゥ)ではデフォルトでrootユーザーは使えない状態になっていますが、ConoHa VPSの場合は、rootユーザーは初期設定するために必要なので、契約時にrootパスワードを必ず設定します。(以下の画面参照)

rootパスワード初期登録画面
STEP
とりあえずアップデートとアップグレードする
apt update
apt upgrade

一般ユーザーを作成する

STEP
一般ユーザーを作る
adduser [ユーザー名]
  1. パスワードの入力を2回求められます(表示されませんが入力されています)。
  2. ユーザー情報(名前や電話番号)は空Enterでスキップ可能です。
  3. 最後に「この情報で登録してよいか?」と聞かれるので「y」を入力します。
STEP
一般ユーザー用のパワードを設定する
passwd [ユーザー名]

このコマンドを入力すると以下のようなステップでパスワードを設定します。

New password: [任意のパスワードを入力]
Retype new password: [↑で入力したパスワードを再度入力]
STEP
sudoで管理者権限でコマンドを実行可能にする
gpasswd -a [ユーザー名] sudo

指定したユーザーをsudoグループに追加するコマンドです。

「sudo」とは?

sudoの語源はsuperuser doで「スードゥ」と読むようです。
一般ユーザーでログインしているときにrootと同じ権限でコマンドを実行するために使用します。
使用する際はログイン中のユーザーのパスワード入力が求められます。

STEP
一般ユーザーが正しく作成されているかを確認する
cat /etc/passwd | grep [ユーザー名]

ちょっと難しいのでコマンドを意訳すると「etcディレクトリ内のpasswdファイルを[ユーザー名]で検索して(grep)該当する行を表示(cat)せよ」という感じの意味です。
このコマンドを実行して以下のように表示されれば正しく作成されています。

[ユーザー名]:x:1000:1000:,,,:/home/[ユーザー名]:/bin/bash
STEP
一般ユーザーでログインし直す
su - [ユーザー名]

「su」はsubstitute user または switch user の略です。つまりユーザーを入れ替えるコマンドです。

STEP
動作確認のためアップデート
sudo apt update

一般ユーザーでログインしているため、sudoを使います。
すると、パスワードを求められるので、一般ユーザー用に設定したパスワードを入力し、アップデートが始まれば一般ユーザーの設定はひとまず完了です。

一般ユーザー作成について参考にした公式ガイド

セキュリティグループを設定する

セキュリティの設定はdefaultのままでは「同一アカウントで作成されたVPS以外の通信はすべて遮断する」設定のようです。
つまり、この後設定するSSH(外部からVPSにアクセスするための設定です)についても遮断されてしまうということなので、あらかじめ設定を変更しておく必要があります。

セキュリティグループのアラート画面
2025年5月3日キャプチャー画像
default設定について

defaultのままでは「同一アカウントで作成されたVPS以外の通信はすべて遮断する」設定になっていると画面に書かれていますが、実際にdefaultの設定を見てみると、下記のようになっています。

一見するとすべて許可のように見えますが、ホワイトリスト(通信許可制)方式に対して「ポート範囲」「IP/CIDR」が設定されていないということなので、通信はすべて遮断されるという意味なのだろうと思います。

defaultセキュリティグループ画面
2025年5月3日キャプチャー画像

セキュリティグループの変更方法

IPV4V6-SSHセキュリティグループ設定画面

今回はSSH接続が目的なので、ひとまず最初から用意されている「IPv4v6-SSH」を使います。
ただし、SSH接続用のデフォルトのポート番号である「22」はポートスキャンの対象になりやすいため、変更したほうが良いとされています。(自分の場合は変更していますが、本記事では紹介しません。)

応用情報技術者試験受験者向けちょいメモ

あらかじめ予約されている(デフォルト)0~1023番のポート番号はシステムポート (System Ports) やウェルノウンポート (Well Known Ports) 番号などと言います。

STEP
「ネームタブ」から設定したいサーバーを選ぶ
ConoHa VPS管理画面
STEP
「ネットワーク情報」をクリック
ネットワーク情報へ
STEP
「鉛筆マーク」をクリック
セキュティグループ選択ボタン
STEP
「IPv4v6-SSH」を選んで[保存]をクリック
「IPv4v6-SSH」を選んで[保存]の画面
ご参考までに

ここでは一時的な設定ですが、最初から様々なセキュリティグループが用意されているため、他のセキュリティグループを眺めておくと自分でカスタマイズするときの参考になるのでおススメです。

既存のセキュリティグループ一覧画面

SSHを設定する

ここまでの設定で以下のように自分のPCのPower shellやbashなどのターミナルウィンドウからアクセスできるはずなので試します。

  • ポート番号が22(デフォルト)の場合
ssh [ユーザー名]@[サーバーIP]
  • ポート番号が22以外の場合
ssh [ユーザー名]@[サーバーIP] -p [22から変更している場合はここでポート指定]

このあとパスワードを聞かれるのでユーザー名に対するパスワードを入力すれば接続できます。

この接続方式をパスワード認証といいます。

VPS追加時にコントロールパネルにて公開鍵認証の設定を行っている場合はパスワード認証でのログインが禁止されています。

この方法でも接続できますが、パスワードによる認証だけではブルートフォース攻撃への耐性が弱いのでセキュリティ的に少し心配です。
また、この方法では毎回パスワードを設定しなければならないので面倒です。

そこで一般的にはSSH接続には公開鍵認証方式を使います。

1.公開鍵(パブリックキー)を登録する

STEP
[セキュリティ]-[SSH Key]を選択し、[+追加]をクリック
[セキュリティ]-[SSH Key]を選択し、[+追加]画面
STEP
[自動生成]を選び、[保存]をクリック
[自動生成]を選び、[保存]画面

通常は自動生成を選べば問題ありませんが、秘密鍵と公開鍵を自分のPCで作成した場合は[インポート]を使って公開鍵を登録します。この場合は秘密鍵は自分のPCにあるため、秘密鍵をダウンロードする必要がありません。

2.秘密鍵(プライベートキー)をダウンロードする

ダウンロードボタン

3.クライアント(あなたのPC)を設定する

①まずダウンロードした秘密鍵を保管する

・開発環境がWindows PCの場合

C:\Users\[ユーザー名]\.ssh

・開発環境がUbuntu PCの場合

[ユーザー名]@xxxxxxx: ~/.ssh

Ubuntu PCの場合は権限(パーミッション)の設定が必要です。

chmod 600 ~/.ssh/[対象のPEMファイル名]

このコマンドはファイルの所有者に読み取りと書き込みの権限を付与しています。
以下のコマンドで念の為権限(パーミッション)を確認できます。

ls -l ~/.ssh
表示形式:-rw------- 1 [ユーザー名] [グループ名] [ファイルサイズ]  3月 24 13:42 [ファイル名]
-rw------- 1 hoge hoge  554  2月 26 18:21 config
-rw------- 1 hoge hoge 1675  5月 05 2025 key-2025-05-05-11-11.pem

このように-rw------- と表示されればOKです。(パーミッション設定について解説すると長くなるので今回は割愛します)

②configファイルを作る

同フォルダ内にconfigという名前で以下のようにファイルを作ると後々便利です。

Host [識別子(エイリアス)]
    HostName [IPアドレスなど正式なホスト名]
    User [ユーザー名]
    Port [ポート番号]
    IdentityFile ~/.ssh/[秘密鍵のファイル名(pem)]

4.サーバー(ConoHa VPS)を設定する

ここからはConoHa VPSのコンソール直接行うか、SSHのパスワード認証で設定します。

STEP
.sshディレクトリを作って、パーミッションを設定する
mkdir ~/.ssh
chmod 700 ~/.ssh
ls -ld ~/.ssh
表示形式:drwx------ 2 [ユーザー名] [グループ名] [ファイルサイズ]  Apr 25 21:38 /home/[ユーザー名]/.ssh
drwx------ 2 hoge hoge 4096 Apr 25 21:38 /home/hoge/.ssh

このようにdrwx------ と表示されればOKです。

STEP
authorized_keys(パブリックキー)を保管し、パーミッションを設定する
echo "[ここにパブリックキーをコピペ]" > ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
sudo cat ~/.ssh/authorized_keys

管理画面の「SSH Key」で取得したパブリックキーが表示されれば

パブリックキー表示画面
STEP
パスワード認証を禁止して、公開鍵(パブリックキー)認証を有効にする(Ubuntu 24.04の場合)
  1. 「nano」というコンソールで動作するテキストエディタ(「nano」の使い方はコチラが分かりやすいのでリンクします)でsshd_configファイルを編集します。
sudo nano /etc/ssh/sshd_config
PasswordAuthentication no #パスワード認証の禁止
KbdInteractiveAuthentication no #キーボードインタラクティブ認証の禁止
PubkeyAuthentication yes #公開鍵(パブリックキー)認証を有効

先頭に「#」がついていたらそれを消し、yes,noを書き換えることでその設定が有効化されます。

  1. しかし、Ubuntu 24.04では、もう一つパスワード認証が禁止するための設定箇所があるので確認します。
sudo cat /etc/ssh/sshd_config.d/50-cloud-init.conf
PasswordAuthentication yes #たぶんこのように「yes」になっていると思います。
  1. こちらの設定のほうが優先上位であり、おそらくここではパスワード認証が有効になったままになっていると思うので、ここも「nano」で書き換えます。
sudo nano /etc/ssh/sshd_config.d/50-cloud-init.conf

「yes」「no」にするか、先頭に「#」(コメントアウトといいます)を追加すればOKですが、ここでは「#」を追加します。

nanoエディタ編集画面
その他のおススメ設定方法

例えば「30-disable-password-auth.conf」ファイルを作ってsshd_config.dディレクトリに格納しておくことで「50-cloud-init.conf」を変更しなくてもパスワード認証を禁止することができます。

※実際に試してみたところ最初の「50-」とか「30-」とかの数字が若い方の設定が優先されるようです。

sudo nano /etc/ssh/sshd_config.d/30-disable-password-auth.conf

ファイルに以下の内容を記述して保存します。

PasswordAuthentication no

rootログインを禁止する

rootユーザーはすべての権限を持っているので、間違えて致命的な設定変更してしまったり悪意ある攻撃者に乗っ取られたりすると非常に危険です。
なのでSSH接続でのrootユーザーでのログインは一般的に禁止します。

sudo nano /etc/ssh/sshd_config
PermitRootLogin no #ルートログインの禁止

この部分を探して「yes」「no」に書き換えることでrootユーザーでのログインが禁止されます。

OpenSSHを再起動する

ここまでサーバーで設定した内容はOpenSSH(サーバーのSSHサービス)を再起動することで反映されます。

再起動する前に次のコマンドでconfigファイルの構文ミスなどをチェックすると良いでしょう。

sudo sshd -t

問題があればエラーが表示されますが、問題がなければ何も表示されないので、安心して下記コマンドで再起動を実行してください。

sudo systemctl restart ssh

公開鍵(パブリックキー)認証方式でSSH接続を試す

ここまでの設定で公開鍵(パブリックキー)認証方式でSSH接続するための基本設定が完了したので、実際にクライアント側から接続を試してみましょう。

②configファイルを作る」でconfigファイルを作っている場合

ssh [ユーザー名]@[サーバーのホスト名]

②configファイルを作る」でconfigファイルを作っていない場合

  • PowerShell(Windows)
ssh -i "C:\Users\[ユーザー名]\.ssh\[秘密鍵ファイル]" -vvv [ユーザー名]@[サーバーのIPアドレス] -p [ポート番号]
  • Bash(Linux/macOS)
ssh -i ~/.ssh/秘密鍵ファイル -vvv [ユーザー名]@[サーバーのIPアドレス] -p [ポート番号]

最終的にパスワードを聞かれずに、こんな感じの画面がターミナルに表示されれば成功です。

ログイン成功画面

念のためパスワード認証が禁止されているかを確認する

ssh -p [ポート番号] -o PubkeyAuthentication=no -o PreferredAuthentications=password [ユーザー名]@[サーバーのIPアドレス]
[ユーザー名]@[サーバーのIPアドレス]: Permission denied (publickey).

こんな感じの画面が表示されればパスワードではログインできないことがわかります。

まとめ

以上でひとまず公開鍵認証方式でのSSH接続ができるようになるはずです。

細かい説明を挟んでいるため長くなってしまいましたが、本記事のとおりに一度ハンズオンで経験してしまえば操作自体は難しくないと思います。しかし、ネット対戦のゲームを作るにはまだまだ先は長いです。

本当は「SSHのポート番号を変更」したり、「ファイアウォールを設定」したり、「SSH接続のクライアントアプリの設定」等々、まだまだやった方がいいことはたくさんありますが、初期設定としてはここまでにして、自分の勉強が進み次第ですが別記事であらためてご紹介できたらと思っています。

  • URLをコピーしました!
目次