XサーバーのVPSに無料お試しのようなものがあるのをご存知でしょうか。
実際にVPSサーバーを契約してサイトを構築する前に試験的にサーバーを利用することができるという、何ともうれしいサービスです。
ここでは無料VPSを使って、SSH接続を設定していく方法を解説していきます。
PCおよびサーバーの環境
ローカル作業環境
OS:Windows11
メモリ:16GB
SSD容量:500GB
作業ソフト:Windows Terminal
XサーバーのVPS環境
OS:Ubuntu 24.10
vCPU:2コア
メモリ:2GB
NVMe SSD:30GB
このような条件での作業になります。
無料VPSの利用登録とサーバーの開設
OSの選定とサーバーの開設
まずはXサーバーの無料VPSの利用登録を行ってください。
登録の際にはクレジットカードの番号を入力する必要(不正利用防止のためということらしいです)があります。
登録ができたら、OSを選択しサーバーを設置しましょう。
ここではOSはUbuntsuにします。
パケットフィルター設定のポート
次にパケットフィルター設定というものを行います。
どのポートを解放するかというものですが、自分でファイヤーウォールの設定等で対応するから大丈夫という人は設定しなくても構いません。
パケットフィルターがONになっているか確認し、フィルター設定を追加します。
SSHを選択し、ポートはデフォルトの22で進めていきます。
新規ユーザーの追加とsudo権限の付与
root権限でSSH接続して、新しいユーザーを追加する
ここではSSH接続にwindowsのターミナルを使います。
ターミナルを立ち上げたら、まずはroot権限でSSHに接続します。
# ssh -p ポート番号 root@IPアドレス
ssh -p 22 root@000.000.00.000
ポート番号は22にし、IPアドレスはサーバーの管理画面で調べておいたものを入力します。
パスワードを聞かれるので、rootパスワードを入力してあげます。
接続できたら、ユーザーを追加しましょう。
# adduser ユーザー名
adduser muchauman
ユーザー用のパスワードを設定になるので、入力してあげます。
ユーザーが追加されると、サーバーの home/ ディレクトリにユーザーのディレクトリとファイルが作成されます。
追加したユーザーでSSH接続してみる
ターミナルのタブをもう一つ開き、追加したユーザーで一度SSH接続してみましょう。
# ssh -p ポート番号 ユーザー名@IPアドレス
ssh -p 22 muchauman@000.000.00.000
初めての接続では以下のようになります。
ED25519 key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXX.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
SSHクライアントが安全確認をしている状態です。
「yes」と入力すると、サーバーのホストキーがローカルの ~/.ssh/known_hosts に保存され、次回以降は確認なしで接続できるようになります。
「no」と入力すると接続は中断されます。
設定したパスワードで接続できれば成功です。
ユーザーにsudo権限を付与する
追加したユーザーで接続ができるようになったら、root権限のタブに戻って、ユーザーにsudo権限を付与します。
# usermod -aG sudo ユーザー名
usermod -aG sudo muchauman
この時点は何も見えませんが、「groups ユーザー名」で確認できます。
# groups ユーザー名
groups muchauman
# ユーザー名 : ユーザー名 sudo users
muchauman : muchauman sudo users
sudoというグループにいることがわかればOKです。
これで必要に応じて管理者権限での操作が可能になります。
認証キーの作成と鍵認証によるSSH接続
認証キーを生成する
SSH接続の際にパスワードを入力するのではなく、認証鍵と呼ばれるファイルを照合してアクセスする方法もあり、こちらの方が推奨されています。
コントロールパネルに「SSH Key」というメニューがあるので、そこで認証鍵を作成しましょう。
「SSH Keyの登録」から、認証キーを登録します。
キーの名前(アルファベット)を入力し、自動生成を選択したら、確認へと進みましょう。
認証キーが生成されると秘密鍵がダウンロードされるので、これを自分のPCに置いておきます。
公開鍵と秘密鍵を確認する
認証キーは公開鍵と秘密鍵の二種類で構成されていて、サーバー側に公開鍵、自分の端末に秘密鍵を配置して使います。
公開鍵の確認とセット
root権限でSSH接続できている状態で、公開鍵が /root/.ssh/ ディレクトリにあるか確認してください。
cat /root/.ssh/authorized_keys
ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX…
ディレクトリにauthorized_keysというファイルがあれば、「ssh-rsa」で始まる文字列が出てきます。
秘密鍵の確認と配置
先ほどダウンロードした秘密鍵を配置しましょう。
ローカルの .ssh/フォルダに .pemファイルを置きます。
ひとまずここまでやれば、認証キーによるSSH接続はできると思いますが、もう一手間加えます。
chmod 400 ~/.ssh/authorized_keys
公開鍵のパーミッションを変更しておきましょう。
これで認証キーによるSSH接続の準備は完了です。
root権限と認証鍵でSSH接続する
さっそく認証鍵を使ってroot権限でアクセスしてみます。
# ssh -p ポート番号 -i 秘密鍵のパス root@IPアドレス
ssh -p 22 -i C:\Users\phant\.ssh\muchauman.pem root@000.000.00.000
秘密鍵のファイルを他の場所に置いている場合は、そのパスを入力してあげましょう。
Last login: Fri Aug 15 12:47:31 2025 from 000.000.00.000
「Last Login ~」と表示されれば、認証キーによるSSH接続は成功です。
認証鍵でユーザーによるSSH接続
接続ユーザーアカウントを切り替え、ディレクトリにも認証鍵を配置する
root権限でのSSH接続はできるかぎりしないのが安全です。
すでにパスワードによるユーザーアクセスは可能ですが、こちらも認証キーを使った接続ができるようにしましょう。
まずは管理者権限で接続した状態から、ユーザーを切り替えます。
# su – ユーザー名
su – muchauman
ユーザーを切り替えると、同時にディレクトリも移動します。
あるいはユーザー権限でパスワード接続した状態にしても構いません。
sudo su
ちなみに管理者権限に戻るためには「sudo su」と入力しましょう。
これで root/ ディレクトリと、home/ユーザー名/ ディレクトリ間を移動できます。
.sshディレクトリとパーミッション設定
管理者権限で認証キーによるアクセスをするために、root/.ssh/ ディレクトリにauthorized_keysを置きました。
同じようにユーザーディレクトリにも.ssh/ディレクトリを用意します。
# 作成場所:/home/ユーザー名/.ssh/
mkdir -p ~/.ssh
# パーミッション:700
chmod 700 ~/.ssh
mkdirにより.ssh/ディレクトリが追加され、chmodによって.ssh/ディレクトリのパーミッションが700に指定されます。
一応パーミッションの確認もしておきましょう。
ls -al ~/
drwx—— 2 muchauman muchauman 4096 8月 15 13:31 .ssh
「ls -al ~/」と入力すると、関連するディレクトリなどの情報が出てきます。
そこの「rwx——」の部分が、読み書き等の設定内容を示しています。
# Ctrl + D でもよし
exit
確認ができたら「exit」を入力し、root権限に戻ります。
ユーザーアカウントの.ssh/ディレクトリに認証鍵をコピー
公開鍵の確認とセット
ユーザーアカウントの.ssh/ディレクトリにも認証鍵を配置していきます。
root/.ssh/ディレクトリにあるauthorized_keysをユーザーの.ssh/ディレクトリにコピーします。
まずroot/.ssh/ディレクトリの公開鍵を確認しておきます。
# root/.ssh/ディレクトリの公開鍵を確認
cat /root/.ssh/authorized_keys
ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX…
公開鍵を確認したら、ファイルを複製しましょう。
# cp /root/.ssh/authorized_keys /home/ユーザー名/.ssh/
cp /root/.ssh/authorized_keys /home/muchauman/.ssh/
公開鍵のコピーができたら、複製した鍵の所有者を新ユーザーに変更します。
# chown 所有者:グループ名 /home/ユーザー名/.ssh/authorized_keys
chown muchauman:muchauman /home/muchauman/.ssh/authorized_keys
# chmod 600 /home/ユーザー名/.ssh/authorized_keys
chmod 600 /home/muchauman/.ssh/authorized_keys
所有者とグループ名はどちらも「ユーザー名」にしておきます。
所有者を変更しないとSSH接続ができないので、必ず変更してください。
また所有者の変更を行ったら、ファイルのパーミッションの確認もしておきましょう。
# ls -la /home/ユーザー名/.ssh/authorized_keys
ls -la /home/muchauman/.ssh/authorized_keys
# -r——– 1 ユーザー名 ユーザー名 399 8月 12 14:43 /home/ユーザー名/.ssh/authorized_keys
chmod 600 /home/muchauman/.ssh/authorized_keys
パーミッションは400でも600でもいいですが、後で編集する必要があるなら600の方が便利です。
ユーザー権限と認証鍵でSSH接続する
準備ができたら、認証鍵を使ってユーザー権限でアクセスしてみます。
# ssh -p ポート番号 -i 秘密鍵のパス ユーザー名@IPアドレス
ssh -p 22 -i C:\Users\phant\.ssh\muchauman.pem muchauman@000.000.00.000
ユーザー権限でのアクセスになるので、ここでは「ユーザー名@IPアドレス」となります。
こちらも「Last Login ~」と表示されれば、認証キーによるユーザー接続は成功です。
root権限でのSSH接続を禁止する
sshd_configファイルを編集する
ユーザー権限でも認証キーを用いてSSH接続ができるようになったので、root権限からのアクセスができないようにしておきましょう。
# エディターモードを起動
sudo nano /etc/ssh/sshd_config
sshd_configファイルを編集するためにエディターモードを起動します。
編集する項目は二つです。
# rootログイン
PermitRootLogin yes
PermitRootLogin no
# パスワード認証
PasswordAuthentication yes
PasswordAuthentication no
これらを「yes」から「no」にしてあげます。
ただこれだけではだめで、設定を反映させるにはSSHを再起動してやります。
# SSHを再起動
sudo systemctl restart sshd
これでroot権限によるアクセスとパスワードによる接続はできなくなります。
ちなみに複数のユーザーのうち、特定のものだけSSH接続を許可することもできます。
# AllowUsers ユーザー名
AllowUsers muchauman
必要に応じて、こうした設定をしてもいいでしょう。
必ず別ウィンドウで接続確認を行ってからにする
接続設定を変更したら、必ず別ウィンドウでターミナルを起動し、指定ユーザーで接続ができるか確認してから、root権限で接続したウィンドウを閉じましょう。
さもないと設定に失敗していた場合、もとに戻せなくなります。
くれぐれも慎重に行ってください。
さらにセキュリティと管理性が向上する設定
sshd_configファイルを編集する
ついでにセキュリティと管理性が向上する設定をしてあげます。
# エディタ起動
sudo vi /etc/ssh/sshd_config
エディタを起動し、sshd_configファイルの以下の部分を変更します。
# override default of no subsystem
Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
SSHサーバーでSFTP(SSH File Transfer Protocol)のサブシステムを変更するためのもので、外部のsftp-serverプログラムを使用してSFTPを処理していたものを、OpenSSHサーバー内蔵のSFTP機能を使用するようにします。
なんのこっちゃという感じですが、操作方法などはそのままでセキュリティが上がると思ってください。
設定を変更したので、SSHを再起動して反映させてやります。
# SSHを再起動
sudo systemctl restart sshd
ちなみに本番運用開始後や多数のユーザーが既に接続している状態での変更は避けるべきです。
サーバー初期設定の段階で、他のSSH関連設定と合わせて実施するのが最も効率的で安全です。