さくらのVPS(Ubuntu 20.04)でSSHの設定をする
概要
さくらの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
で接続できるようになる。
Discussion