skip to content
barorin&?

rootを禁止してSSHも22番以外のポートに変更する方法

/ 4 min read

はじめに

Ubuntuでrootを禁止してSSHも22番以外のポートに変更する方法のまとめです。

方法

実行環境

VPS: Ubuntu22.04LTS
ローカル端末: Windows10 + TeraTerm + WinSCP

rootユーザーの禁止設定

TeraTermでの操作

# とりあえずこれ
$ sudo apt update
$ sudo apt upgrade

# 新規一般ユーザー作成。-Gでsudoグループに所属させる
# hogeがユーザー名(以下同様)
$ useradd -G sudo hoge

# パスワードを設定
$ passwd hoge

# 一般ユーザーのホームディレクトリを設定
$ mkdir /home/hoge
$ chown hoge:hoge /home/hoge

# 一般ユーザーに切替
$ su - hoge

# 公開鍵用のディレクトリを作成して権限設定
$ mkdir /home/hoge/.ssh
$ chmod 700 /home/hoge/.ssh

TeraTermで鍵生成

  1. 設定 > SSH 鍵生成
  2. 鍵の種類: RSA で生成ボタンを押す
  3. 鍵のパスフレーズを入力
  4. 公開鍵の保存ボタンを押す
  5. 秘密鍵の保存ボタンを押す

WinSCPで鍵転送

作成された id_rsa.pub を /home/hoge/.ssh フォルダに転送

再びTeraTermでの操作

# 所有者情報の設定(rootユーザーで)
$ chown hoge:hoge /home/hoge/.ssh/id_rsa.pub

# ファイル名の変更
$ mv /home/hoge/.ssh/id_rsa.pub /home/hoge/.ssh/authorized_keys

# sshdファイルのバックアップ
$ sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.old

# sshdファイルの編集
$ sudo vim /etc/ssh/sshd_config
# -> Rootログインとプレーンパスワードでのログインを禁止
# -> PermitRootLogin no
# -> PassowrdAuthentication no
# -> PubkeyAuthentication yes

# SSHサーバー再起動
$ sudo systemctl restart sshd.service

SSHのポート番号を変更

Xserver の VPS パネルでは、SSH のポートは 22 番で固定されているため、ufw 側で制御する。
そのため、まず VPS パネルで接続許可ポートの設定を『全て許可』にしておく。

TeraTermでの操作

# 状態確認
$ sudo ufw status
# -> おそらく非アクティブ

# 有効化
$ sudo ufw enable
# -> disrupt existing ssh connections. Proceed with operation (y|n)? y

# IPv6は無効化
$ sudo vim /etc/default/ufw
# -> IPV6=no

# deny(ホワイトリスト)形式にするため、いったん全拒否設定
$ sudo ufw default deny

# ポートの追加
$ sudo ufw allow 22 # 現状維持
$ sudo ufw allow 1111 # 変更予定のポート

# ufwのリロード
$ sudo ufw reload

# 設定の確認
$ sudo ufw status numbered

# さらに特定のIPアドレスに絞る場合
$ sudo ufw allow from xxx.xxx.xxx.xxx to any port 1111

# sshdファイルでのポート変更
$ sudo vim /etc/ssh/sshd_config
# -> Port 1111

# SSHサーバー再起動
$ sudo systemctl restart sshd.service

# 変更後のポートでアクセスできることを確認後、
# 22番ポートを閉じる

# 設定の確認
$ sudo ufw status numbered

# 22のナンバーを削除
$ sudo ufw delete 1 # [1]の場合

# 削除の確認
$ sudo ufw status numbered

備考

途中で SSH 接続できなくなった場合、VPS パネル経由で接続し、sshd_config を元に戻せば OK


# sshd_config.oldの確認
$ ls -lah

# sshd_config の削除
$ sudo rm -rf sshd_config

# バックアップファイルからの戻し
$ sudo cp -R sshd_config.old sshd_config

# SSHサーバー再起動
$ sudo systemctl restart sshd.service

参考

VPS の root ユーザーログインを禁止しよう!超強力な権限を持たせたまま放置は絶対 NG f13: xserver vps + ubuntu + ssh + python