Nekosame1030
@Nekosame1030

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

SSH接続のポート変更が上手くいきません

解決したいこと

ゲストOSのUbuntu ServerへのSSH接続において、22ポートから2222ポートに変更したいのですが失敗してしまいます。原因をLLMやブログなどで探すも見つからず困っています。どうかお助けください!

発生している問題・エラー

SSHのポート番号を書き換え、SSHを再起動しましたが、ステータスを確認するとlisten状態なのは22ポートのままです。
スクリーンショット 2024-09-21 22.53.34.png
スクリーンショット 2024-09-21 22.54.55.png
ホストのmacOSのターミナルから、

ssh -p 2222 ubuntu@192.168.10.2

でSSH接続を試みても Connection refused となってしまいます。

自分で試したこと

SSH設定の書き換え、保存、再起動は何度も行いましたが上手くいきません。
UFWをインストールしているので、22ポートはdeny,2222ポートはallowにしています。有識者の方々、指摘をお願いいたします。
追加で必要なスクリーンショットや情報がありましたら申し付けください。

※筆者は大学2年生で実務経験はありません。インフラやセキュリティを学ぶ目的で実験的にubuntuやapacheなどを学んでいます。

0

2Answer

それは 22/tcp で listen しているのが sshd ではなく systemd だからです。

$ systemctl status ssh.socket
● ssh.socket - OpenBSD Secure Shell server socket
     Loaded: loaded (/usr/lib/systemd/system/ssh.socket; enabled; preset: enabled)
     Active: active (running) since Sun 2024-09-22 07:30:27 JST; 1h 1min ago
   Triggers: ● ssh.service
     Listen: [::]:22 (Stream)
      Tasks: 0 (limit: 9516)

この port 22を変更します。
以下のファイルを作成して

/etc/systemd/system/ssh.socket.d/override.conf
[Socket]
ListenStream=
ListenStream=2222

以下コマンドで ssh.socket をリスタートすれば、変更されていることが確認できると思います。

$ systemctl daemon-reload
$ systemctl restart ssh.socket
$ systemctl status ssh.socket
2Like

Comments

  1. @Nekosame1030

    Questioner

     systemdやソケットの概念を知らなかったので調べてみました。systemdがSSHを管理している場合、ssh.socketが最初にリスニング状態になり、ポートにリクエストが来たらsshdを起動する。したがって、ssh.socketが22/tcpでリスニングしている現状では2222/tcpでSSH接続を試みても接続失敗するということですね。
     教えていただいた内容をそのまま入力するのではなく、仕組みや意味を理解しながら進めます!ご指摘ありがとうございます!!

sshd_config に同名の設定が複数ある場合、通常は最初に現れた値が採用されます。 Port 2222 の設定より前に Include されたファイルの中で Port 22 を設定していませんか?

1Like

Comments

  1. @Nekosame1030

    Questioner

    回答ありがとうございます。ファイルを冒頭からスクショしたものがこちらになります。
    スクリーンショット 2024-09-21 23.49.40.png
    Port 22は設定していないと思われます。

  2. そのファイル、たぶん/etc/ssh/sshd_configのことだと思いますが(なぜ、ファイルのパスを書かないのですかね)、にあるIncludeエントリに指定されているファイル、すなわち /etc/ssh/sshd_config.d/*.confで指定されるファイル、の中に Port 22 を指定しているものがあるのでなないかという指摘だと思います。

    いかがでしょうか。

  3. @Nekosame1030

    Questioner

    なるほど!!!ポート番号を変えるという目的を意識しすぎた故に視野が狭まっておりました。ファイルの構造や記述されている内容の意味を理解するという基礎が不十分でした。貴重なご指摘及び補足をありがとうございます!
    usasi様、回答の意図を的確に理解できず申し訳ありませんでした。。

Your answer might help someone💌