Ubuntu (20.04)へsshログインした際に表示されるWelcomeメッセージの仕組みと表示しない方法

前書き:UbuntuはWelcomeメッセージが立派で邪魔

ラズパイサーバ(Raspberry Pi OS)からHP小型PCUbuntu 20.04)にサーバ移行した時、UbuntuのWelcomeメッセージがラズパイより立派な事に気づきました。

例えば、Ubuntuにsshログインした時、以下のようなWelcomeメッセージが出ます。

上記のメッセージは、システム情報やパッケージアップデートの必要性などを教えてくれます。しかし、システム負荷は別ツールで監視する事が一般的ですし、自宅サーバの場合は常に最新バージョンにアップデートする訳ではありません。

私にとっては、sshログイン時にWelcomeメッセージが表示されない方が、不要な情報に目を通さなくて済むので嬉しいです。

そこで、本記事では「Welcomeメッセージを表示する仕組み」を説明した後に、「Welcomeメッセージを表示しない方法」を紹介します。

                

検証環境

第8世代Intel Core i3、RAM8GB、Ubuntu 20.04です。サーバーというより、ただのPC。

                   

Welcomeメッセージは/etc/motdではない

Linuxでは、ユーザーにメッセージを伝える方法として、/etc/motdファイルを利用する事があります。motdは、Message Of The Dayの略です。

motdファイルはbase-filesパッケージ(OSのシステム情報を提供するパッケージ)が提供する設定ファイルであり、sshdデーモン(openssh-server)がmotdファイルに書かれている内容をsshログイン時にそのまま表示します。

この仕組みに関しては、以下の記事で説明しています。興味がある方はご覧ください。

【LPICで見た】/etc/motdの内容を出力しているのは誰?【答え:sshd】

                

しかし、Ubuntu環境ではmotdファイルがありません。そのため、別の仕組みでWelcomeメッセージを表示しています。

             

UbuntuのWelcomeメッセージは/etc/update-motd.d/

UbuntuのWelcomeメッセージは、/etc/update-motd.d以下にある複数のShell Scriptを順番に実行する事によって、メッセージ本文を作成しています。Scriptの実行順番は、ファイル名の先頭にある数値で制御されています。数値が小さいScriptから順番に実行されます。

以下、/etc/update-motd.d以下の情報例です。

              

例として、00-headerの内容および実行結果を以下に示します。

               

/etc/update-motd.d/以下のScriptを実行しているのは誰?

ログイン時に、pam_motd.so共有ライブラリが/run/motd.dynamicファイルを動的に作成した後(≒/etc/update-motd.d以下のScriptを実行した後)、motd.dynamicファイルの中身を表示します。ここでのpam(Pluggable Authentication Module)とは、ユーザ認証に関連する機能提供するモジュールです。

pam_motd.soは、/etc/pam.d/loginと/etc/pam.d/sshdから2回呼び出される事が、Debian Wikiに記載されています。裏付けは取っていませんが、UbuntuはDebian派生ディストリのため、同じ仕組みを共有していると思われます。

pam_motd.soを提供するlibpam-modulesパッケージ(pamソースパッケージ)を確認すると、Debian(≒Ubuntu)環境向けのパッチ(debian/patches-applied/update-motd)内でmotd.dynamicを作成する処理が確認できます。

以下、パッチの抜粋です。

               

上記のパッチから、debianutileパッケージが提供するrun-partsコマンドを使用して/run/motd.dynamicを生成している事が読み取れます。

motd.dynamicの生成処理、つまり”run-parts –lsbsysinit /etc/update-motd.d”を実際に実行した結果は以下の通りです。Welcomeメッセージの最下部(”Last login:〜”)以外は、motd.dynamic内に記載されている事が読み取れます。

なお、Welcomeメッセージの最下部(”Last login:〜”)はpam_lastlog.soが表示するログイン履歴です。

                   

Welcomeメッセージを表示しない方法

複数の案が考えられます。

Welcomeメッセージを表示しない方法
  1. /etc/update-motd.d以下のScriptの先頭(Shebangの後)に”exit;”を追加
  2. /etc/update-motd.d以下のScriptの実行権限を落とす
  3. $/HOME/.hushloginを追加

一番目の方法は、各Scriptに”exit;”を追加する作業が面倒な一方で、Scriptに”exit;”を付与する/付与しない事によって、Welcomeメッセージの表示したい情報/非表示にしたい情報を制御できます。

二番目の方法は、私のように横着する人向けで、全てのScriptを実行できなくする事によって、Welcomeメッセージを全て非表示にします。

以下、実行権限の落とし方の例です。

一番目と二番目の方法は、システム全体に影響があります。複数人のユーザがアクセスするサーバの場合は、これらの方法を実施する前に他のユーザに迷惑がかからないかを判断した方が好ましいです。

             

最後の方法は、ユーザ単位でWelcomeメッセージを非表示にする方法です。/etc/update-motd.d以下のScriptを編集しないため、なるべくScriptを初期状態にしたい人向けです。ただし、ユーザ単位で.hushloginを追加する手間が発生します。

以下、.hushloginの追加方法例です。

                       

おすすめ

1件の返信