MENU

サーバーログイン時の周知メッセージを確実に届ける設定手順

目次

MOTD とは何か:ログイン時に自動表示される仕組みの概要

SSH でサーバーにログインした直後、コマンドプロンプトが現れる前に任意のテキストを表示できます。この仕組みが MOTD(Message of the Day)です。運用現場では「メンテナンス日時の事前告知」「接続ポリシーの変更通知」「緊急連絡事項」などの周知に活用されています。

メッセージの表示には PAM(Pluggable Authentication Modules)の pam_motd モジュールが使われます。かつては /etc/motd を直接書き換えるだけで完結しましたが、Ubuntu・Debian では動的生成の仕組みが追加され、設定ファイルが複数箇所に分散しています。ディストリビューションによって設定の場所が異なるため、自環境を把握してから作業に入ることが重要です。

静的メッセージを設定する(全ディストリビューション共通の基本)

最もシンプルな方法は /etc/motd ファイルを直接編集することです。このファイルに書いたテキストが、ログイン時にそのまま表示されます。

sudo nano /etc/motd

以下のような内容を書いて保存します。

============================================================
 [周知] 2026年8月10日(月)02:00〜06:00 定期メンテナンスを実施します
 作業内容:カーネルアップデートおよびディスク増設
 問い合わせ:infra-team@example.com
============================================================

ただし Ubuntu・Debian 系では、ログインのたびに /etc/update-motd.d/ 配下のスクリプトが実行されて /run/motd.dynamic が生成され、/etc/motd の内容はその後ろに追記される仕組みになっています。メンテナンス完了後には手動で /etc/motd を空にする必要があるため、後述の /etc/update-motd.d/ を使う方法のほうが管理しやすいケースが多いです。

動的メッセージで情報を自動生成する(Ubuntu・Debian 系)

Ubuntu 16.04 以降や Debian 9 以降では、/etc/update-motd.d/ 配下に置いた実行可能スクリプトがログインのたびに実行されます。ファイル名の数字プレフィックス(00-99-)の昇順で実行されるため、既存スクリプトの番号を確認してからファイル名を決めます。独自メッセージの追加には 99- 台のファイルを新規作成するのが安全です。

sudo tee /etc/update-motd.d/99-custom-notice << 'EOF'
#!/bin/bash
echo ""
echo "============================================================"
echo " [周知] 2026年8月10日(月)02:00〜06:00 定期メンテナンス予定"
echo " 問い合わせ:infra-team@example.com"
echo "============================================================"
echo ""
EOF
sudo chmod +x /etc/update-motd.d/99-custom-notice

chmod +x を忘れると実行されずメッセージが表示されません。作成後は以下のコマンドで即座に動作確認できます。

run-parts /etc/update-motd.d/

Ubuntu 22.04 以降ではデフォルトで 50-landscape-sysinfo95-hwe-eol など複数のスクリプトが含まれています。不要なスクリプトは削除せず実行ビットを外すだけで無効化できるため、もとに戻しやすいです。

# 不要なスクリプトを無効化(削除せず実行ビットだけ外す)
sudo chmod -x /etc/update-motd.d/50-landscape-sysinfo

動的 MOTD を使えば、稼働時間やディスク使用量をログイン時に自動取得して表示するような応用も可能です。ただしスクリプトの処理が重いとログインの体感速度に影響が出るため、外部コマンドを多用する場合はレイテンシを測定してから採用してください。

RHEL 系ディストリビューション(Rocky Linux・AlmaLinux・CentOS Stream)での設定

RHEL 9 系(Rocky Linux 9・AlmaLinux 9・CentOS Stream 9)では /etc/motd への直接編集が基本です。/etc/update-motd.d/ の仕組みは標準では有効になっていません。

複数サーバーで共通ベースメッセージを持ちつつ一時的な告知を追加したい場合、/etc/motd.d/ ディレクトリにファイルを分割して配置する方法が便利です。このディレクトリ内のファイルを pam_motd が結合して表示します。告知が終われば対象ファイルを削除するだけで済み、/etc/motd 本体に手を入れずに管理できます。

# /etc/motd.d/ ディレクトリがなければ作成
sudo mkdir -p /etc/motd.d

# メンテナンス告知ファイルを作成
sudo tee /etc/motd.d/maintenance << 'EOF'
============================================================
 [周知] 2026年8月10日(月)02:00〜06:00 定期メンテナンス予定
 問い合わせ:infra-team@example.com
============================================================
EOF

# 作業完了後はファイルを削除するだけ
# sudo rm /etc/motd.d/maintenance

pam_motd/etc/motd.d/ を読む設定になっているかは、/etc/pam.d/sshd で確認します。

grep pam_motd /etc/pam.d/sshd

pam_motd.so の記述がなければ、以下の行を session セクションに追加します。

session    optional     pam_motd.so

SSH 接続でメッセージが表示されないときの確認手順

設定を変更してもメッセージが出ない場合、以下の順番で確認します。

sshd_config の PrintMotd を確認する

grep -E 'PrintMotd|PrintLastLog' /etc/ssh/sshd_config

PrintMotd no になっている場合は yes に変更して sshd を再起動します。

sudo systemctl restart sshd

Ubuntu では PrintMotd no がデフォルト設定の場合があります。これは PAM 側でメッセージを表示する設計のため意図的に無効化されています。PrintMotd yes に変更すると PAM と sshd の両方でメッセージが二重に出ることがあるため、Ubuntu 環境では PAM 側の設定に一本化するのが無難です。

ファイルのパーミッションを確認する

# /etc/motd は root 所有・644 であることを確認
stat /etc/motd

# Ubuntu の場合、update-motd.d スクリプトに実行ビットがあるか確認
ls -la /etc/update-motd.d/

/etc/motd のパーミッションが 600640 になっていると、一般ユーザーで読めずメッセージが表示されません。sudo chmod 644 /etc/motd で修正します。

運用で注意すべき点

掲載する情報の範囲に気をつける:MOTD はログインしたすべてのユーザーに表示されます。カーネルバージョンや内部 IP アドレスなどの詳細なシステム情報を掲載すると、万一の不正アクセス時に攻撃者へ情報を与えることになります。外部公開サーバーでは「このシステムへの不正アクセスは禁止されています」程度の法的警告文に絞るのが一般的な慣行です。

Ansible・Puppet などで一元管理する:複数台のサーバーを運用している場合、/etc/motd/etc/motd.d/ 配下のファイルを構成管理ツールで配布・管理すると、更新漏れを防げます。あるインフラ担当チームでは、メンテナンス告知の配布を Ansible Playbook で自動化し、作業直前に全台へ一括適用・作業完了後に一括削除する運用で対応しています。

ログインシェルと非ログインシェルの違い:MOTD は SSH ログインや su - でのユーザー切り替え時に表示されますが、su(ハイフンなし)や tmuxscreen の新規ウィンドウでは表示されません。「全員に届いているはずのメッセージを見ていなかった」という事態を避けるために、実際の運用フローに合わせて事前に表示確認をしてから本番適用してください。

<PR>この記事に関連するおすすめ書籍

[改訂第3版]シェルスクリプト基本リファレンス

移植性の高いシェルスクリプトを書くための逆引きリファレンス。運用スクリプトの信頼性を高めたい方に。

「コマンドは打てる。次は"現場で通用する型"を最短で身につけたい」——そんなあなたへ。

ネットの断片的なTipsをコピペするだけでは、体系的な運用スキルはなかなか積み上がりません。リナックスマスター.JPの無料メルマガ「リナマガ」では、現場で実際に使うLinuxサーバー運用の考え方を、順を追って実務目線でお届けしています。いま登録された方には、安全なサーバー構築の「型」をまとめた『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼント中です。

>> 図解60P『Linux入門マニュアル』を無料で受け取る
(メルマガ登録は10秒・いつでも解除OK)

※ 「独学の時間がもったいない」「プロから現場の技術を最短で学びたい」という本気の方には、2日で実務レベルが身につく初心者向けハンズオンセミナーもご用意しています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次