久々にOracle Cloudで無料枠のUbuntuサーバーを作り直していたらドハマリしたので、備忘録を残す。
問題の概要
環境
Ubuntu 22.10以降(投稿時点で言うと22.10、23.04、23.10、24.04、24.10、25.04が該当すると思われる。Ubuntuのバージョンで検索する人が引っかかってほしいので列挙しておいた)
起きていること
従来、SSHポートをデフォルトの22番から変更する際は、/etc/ssh/sshd_config
のPort
を編集していたと思う。しかし、これを変更してsshサービスを再起動(sudo systemctl restart ssh
)してみても、どうも22番ポートで待ち受けてしまう。
解決策
/etc/ssh/sshd_config
だけでなく、/usr/lib/systemd/system/ssh.socket
も編集する必要がある。
手順
sshd_configの編集
従来通り、/etc/ssh/sshd_config
のPort
を編集する。
/systemd/system/ssh.socketの編集
次に、/usr/lib/systemd/system/ssh.socket
の以下の部分を編集する。
[Socket]
ListenStream=22
この”22”をお好みのポート番号に変更する(もちろん、/etc/ssh/sshd_config
で設定したものと同じ番号を使う必要がある)。
daemon_reloadとsshサービスの再起動
systemdのファイルに手を加えたので、daemon-reload
からやる必要がある。
sudo systemctl daemon-reload
sudo systemctl restart ssh
これで、sshが設定したポートで待ち受けてくれるようになる。
systemctl status ssh
で確認してみるとよい。
参考資料
【2024年12月版】Ubuntu24.04 で sshdの待ち受けポートの変更【ssh, sshd】 #SSH - Qiita 参考にしてうまく行った記事。書いてある手順はほとんどここのコピペに等しい。
Cannot use a custom SSH port in Ubuntu 22.10 or above? Here's a fix - DEV Community 微妙に違う手順が記載されているので、うまくいなかったらこっちも参照してみてほしい。
(おまけ)もしかして: iptables
Oracle Cloudのインスタンス上でこれをやってポートが開いてるはずなのに接続できないという人は、まずOracle Cloud側のサブネットでポートが開いているかを確認する。それでも詰まっている人は「oracle cloud iptables」とかで検索すると幸せになれるかもしれない。