🌸

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

2024/02/19に公開

概要

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

STEP1 Ubuntuをインストール

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

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

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

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

ローカルのPCで

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

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

STEP4 パッケージを更新する

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

STEP5 一般ユーザーを作成する

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

sudo adduser testuser

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

sudo gpasswd -a testuser sudo

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

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

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

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

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

mkdir ~/.ssh

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

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

cd ~/.ssh
ssh-keygen -t rsa

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

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

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

STEP8 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

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

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

sudo apt install ufw

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

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

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

STEP10 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で編集を提案
UKIYOcreate

Discussion