SSH のリッスンポートを変更できない

通常(というか初期設定では) SSH のリッスンポートは「 22 」番が使われている。あまりにもこれは有名な話なので、変更しましょうというのがあちこちで見受けられる。私もやってみた。

最初にやったのは

まず最初は /etc/ssh/ssh_config の編集。これは一般的にも広まっている方法だと思う。適当なエディタで同ファイルを編集して、コメントアウトされている #Port 22 を探して、変更。その後サービスをリスタートさせるというもの。この方法は以前から使われていた方法ですね。

ところが、 Ubuntu22.04.3 LTS で行ってもリッスンポートが変更できない。番号を指定してやっても、 22 番を使い続けてしまう。何故でしょう?

検索して見つけたこと

この変更は、 SSH サーバーの待ち受けポートを変更したい場合に影響があります。従来であれば /etc/ssh/sshd_config を直接書き換えていましたが、 Ubuntu 22.10 では systemd.socket の Unit ファイルを変更する必要があります。

Ubuntu 22.10 で SSH サーバーの待ち受けポートを変更するには - 仮想化通信

私の Ubuntu は、 22.04.3 です。引用したのは、 22.10 について何ですが、どうも同じようです。 socket の Unit ファイルを書き換えます。といっても、何のことやらさっぱりです。上記引用にやり方が書いてあるので、その通りに実行してみます。曰く、

  • /lib/systemd/system/ssh.socket を書き換える必要がある
  • しかしながら、上記ファイルは openssh-server パッケージが提供しているファイルのため、直接書き換えるのはよろしくない。パッケージがアップデートされたら、上記ファイルは書き換えられてしまうことが考えられる
  • systemctl edit を使って Overwrite ファイルを作る。

systemctl edit (今回初めて使った)コマンドを実行しても、「変更点が無いので、変更されません」とかいうメッセージが出てオーバーライドファイルが作成されない。困った。

更に検索してみたら

### Editing /etc/systemd/system/firewalld.service.d/override.conf

### Anything between here and the comment below will become the new contents of the file

<— ここに設定を記述する —>

### Lines below this comment will be discarded

systemctl edit で書き込めない #Linux – Qiita

あっ、コメント読んでなかった。引用の3行目に変更点を記述しなければならないんですね。これでうまくいく!と思ったのですが、ダメです。うまくいきません。

仕方が無いので

/lib/systemd/system/ssh.socket を直接書き換えてみました。そうするとうまくいくんですね。

openssh-server パッケージがアップデートされたら、変更される可能性大です。そうすると、 SSH 接続でエラーが出ることになりますね。困った。

原因を追及してみます。ソケットファイルの直接書き換え以外の方法を模索してみます。

投稿者プロフィール

kaizawa
kaizawaブロガー
新潟県在住。1964年生まれ、東京オリンピックの年ですね。
突然燃え上がったり、鎮火したり興味の波が激しいので注意が必要です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA