🌸

さくらのVPS(Ubuntu 20.04)でSSHの設定をする

2024/02/19に公開

概要

さくらのVPSでSSH接続の設定をしたので備忘録。

手順

1. Ubuntuをインストール

Ubuntu 22.04を選ぶと最安の512MBプランを選択できなくなるので、Ubuntu 20.04を選択。
このとき管理ユーザーのパスワードも同時に設定するのでしっかりとメモをしておく。

2. パケットフィルタを解除する

ファイアウォール等の設定は自分で行いたいので、さくらのVPSのコントロールパネル上で設定できるパケットフィルタの設定を解除する。
コントロールパネルからサーバー > パケットフィルター設定と選択し、左下にある赤い「パケットフィルタを利用しない」ボタンをクリックしてパケットフィルタを解除する。

3. 管理ユーザーでVPSにSSH接続する

ローカルのPCで

ssh ubuntu@(ホスト名) -p 22

を実行してVPSにSSH接続する。
ホスト名はコントロールパネルからサーバー > 基本情報と選択することで確認できる。

4. パッケージを更新する

sudo apt update -y && sudo apt upgrade -y

5. 一般ユーザーを作成する

管理ユーザーは権限が強すぎて危険なので、管理ユーザーよりは権限の弱い一般ユーザーを作成する。
今後は一般ユーザーとしてVPSにログインして作業する。
今回はtestuserという一般ユーザーを作成するが、testuserの部分は任意のユーザー名で良い。

sudo adduser testuser

を実行してユーザーを追加する。このとき同時にtestuserのパスワード設定も求められるので設定する。

sudo gpasswd -a testuser sudo

で作成したtestuserにsudo権限を付与する。

6. 一般ユーザーでVPSにSSH接続する

ローカルのPCに戻り、今度は一般ユーザーでVPSにSSH接続する。

ssh testuser@(ホスト名) -p 22

公開鍵を保管するためのディレクトリをルートディレクトリに作成する。

mkdir ~/.ssh

7. ローカルのPCからVPSにSSHの公開鍵を送信する

SSHの鍵をまだ作成したことがない場合は、

cd ~/.ssh
ssh-keygen -t rsa

を実行して公開鍵と秘密鍵を生成する。既に作成済みの場合はスキップでOK。

鍵を生成したら、公開鍵のみをVPS上に送信する。

scp ~/.ssh/id_rsa.pub testuser@(ホスト名):~/.ssh/authorized_keys

8. SSHの設定をする

ssh testuser@(ホスト名) -p 22

で再度一般ユーザーでVPSにSSH接続。

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys

を実行して、sshに関連するファイルの権限を変更し、sshサーバーがこれらのファイルを読み込めるようにする。

セキュリティの強化をするために

sudo vim /etc/ssh/sshd_config

を実行して、vim上で以下の三点を書き換える。

# 変更前
# PermitRootLogin prohibit-password

# 変更後
PermitRootLogin no
# 変更前
# PasswordAuthentication yes

# 変更後
PasswordAuthentication no
# 変更前
# Port 22

# 変更後
Port 2000 # ここは任意のポート番号でOK

これで

  • ルートユーザーのログインを禁止
  • パスワード認証を禁止
  • ssh用のポートをデフォルトの22番から2000番に変更

することができて、セキュリティが強化された。

sudo systemctl restart ssh
sudo systemctl reload ssh
sudo systemctl enable ssh

でsshサーバーを再起動して、変更した設定をサーバーに反映させる。

sudo systemctl stop ssh.socket
sudo systemctl disable ssh.socket
sudo systemctl restart ssh
sudo systemctl reload ssh
sudo systemctl enable ssh

9. ファイアウォールの設定をする

sudo apt install ufw

でufwをインストールする。

sudo ufw default deny # 全ポートでの接続拒否
sudo ufw allow 2000   # 2000番(手順8で指定したポート番号)だけ接続許可
sudo ufw enable

で2000番以外のポートでの接続を拒否する。

10. SSH接続ができるかを確認する

ssh testuser@(ホスト名) -p 2000

でSSH接続できるかを確認する。

また、

  • 管理ユーザーでSSH接続できないこと
  • 22番ポートで接続できないこと
  • パスワード認証できないこと

も確認しておく。

毎回

ssh testuser@(ホスト名) -p 2000

を入力するのは面倒なので、~/.ssh/configに

Host sakura
    HostName (ホスト名)
    IdentityFile ~/.ssh/id_rsa
    User testuser
    Port 2000

のような設定を書いておくと、

ssh sakura

で接続できるようになる。

GitHubで編集を提案

Discussion