効率を最大化:Ubuntu 22.10以降のソケットベースのSSHアクティベーション

はじめに

Ubuntuのダイナミックな風景の中で、革新はそれを前進させる原動力です。Ubuntu 22.10のリリースによって、最も基本的なサービスの1つであるSSHとのやり取りの方法に大きな変化が起こりました。それが、「ソケットベースのアクティベーション」です。これにより、リモート接続の処理方法が大きく変わりました。

このパラダイムシフトは、SSHサービスの起動方法に関してよりリソース効率の良いアプローチを導入し、システムリソースのより賢明な配分を約束します。このブログ記事では、Ubuntu 22.10以降のSSHでソケットベースのアクティベーションを使用する際の詳細について探究します。

ソケットベースのアクティベーションとは何か?

ソケットベースのアクティベーションは、SSHを含むLinuxシステム上のサービスを管理するために使用される方法です。従来、SSHのようなサービスはsystemdによって直接起動されていました。しかし、ソケットベースのアクティベーションを使用すると、着信リクエストがあるまでサービスは起動されません。このアプローチにはいくつかの重要な利点があります:

  1. リソース効率:SSHサービスは接続が要求されたときにのみ開始されるので、メモリやCPUなどのシステムリソースは賢明に使用されます。

  2. 起動時間の短縮:SSHが接続要求がされたときにのみ開始されるので、ブートアップ時にsystemdがサービスを起動する際の負担が軽減されます。

従来のSSHとソケットベースのSSH

従来のSSHでは、SSHサービス(ssh.service)は着信接続リクエストがないときでもsystemdによってシステムブート中に直接開始されます。一方、ソケットベースのSSH(ssh.socket)では、接続リクエストがあるまで待機し、その後SSHサービスを起動します。

systemctlを使用して従来のSSHとソケットベースのSSHの「ssh.service」ユニットを調べると、リソースの使用についての詳細情報が得られます:

従来のSSHでは、ssh.serviceユニットは起動時に「enabled」であり、メモリの使用量は14.6メガバイトです。

一方、ソケットベースのSSHでは、ssh.serviceユニットは起動時に「disabled」であり、新しい接続リクエストがあると「ssh.socket」によってトリガーされます。ここでのメモリ使用量はわずか2.3メガバイトであり、従来のSSHよりもはるかに少ないです。

この変更を採用しているUbuntuのバージョンは?

Ubuntu 22.10(キネティッククードゥ)を皮切りに、SSHアクティベーション方法の変更は、記事執筆時の最新バージョンである23.04(ルナロブスター)および23.10(マンティックミノタウロス)の後続バージョンでも継続されています。

変更に対するUbuntuユーザーの反応は?

Ubuntu 22.10以降のSSHでソケットベースのアクティベーションへの移行は、ユーザーコミュニティから様々な反応がありました。多くのユーザーは効率性とリソース管理の点での潜在的な利点を評価していますが、一部のユーザーは特にカスタムポートの使用従来のSSH設定への復帰に関連する課題に直面しています。

特に、SSH接続のカスタムポートの使用に関連して問題が指摘されています。ソケットベースのアクティベーションでは、SSHを非標準ポートでリッスンするように構成することが、従来の設定よりも複雑になることがわかっています。これは、セキュリティ上の理由またはネットワークの設定によってカスタムポートに依存している人々にとって不満の原因となりました。

さらに、いくつかの理由により、従来のSSH設定の慣れ親しんだ安定性と予測可能性を好む、または必要とするユーザーのセグメントがあります。これらのユーザーは、SSHサービスの管理方法を以前の方法に戻すことを望んでいます。

結論

要約すると、UbuntuによるソケットベースのSSHアクティベーションへの移行は、効率性を高めるものとなります。特にカスタムポート構成に関するユーザーフィードバックは、改善のために不可欠です。継続して改善が行われることで、この機能は価値ある資産となるでしょう。

こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/sneh27/maximizing-efficiency-socket-based-ssh-activation-in-ubuntu-2210-and-above-344b