スポンサーリンク

このドキュメントの内容は、以下の通りです。

はじめに

オペレーティングシステムで動作するプログラムの多くは、ソフトウェアの起動時に、設定情報を読み込むのが一般的ではないでしょうか。設定変更したときに、即時反映されるプログラムもあれば、設定を再読み込みする必要のあるプログラムもあります。

この記事では、 OpenSSH SSH daemonsshdの設定を反映させる方法について解説します。

設定を反映する方法

プログラムの設定を反映する方法は、以下の方法があります。

  • 再起動する
  • 再起動せずに設定を読み込む

再起動をするとプロセスはどうなるのか?

sshd のデーモンプロセスを再起動する場合は、プロセスが一度終了され、その後、プロセスが起動されます。そのため、一度、すべての sshd のプロセスは終了します。つまり、sshd の接続中のセッションがすべて切断されます。

目の前に、パソコンやサーバがある場合は、sshd を終了しても困りませんが、遠隔地のサーバに ssh でリモートアクセスしていて、ほかにアクセスする方法がない場合は、設定ファイルの変更後の再起動は注意が必要です。設定を変更後に、sshd が起動することができなかったとしたら、そのあと、リモート接続できなくなってしまいます。

再起動せずに設定を読み込む利点

遠隔地にいる場合に、設定変更後にsshd を再起動した場合に、sshd が起動できないとき、そのあと、操作不能になってしまうと説明をしました。

それでは、それを避けるための方法はなんでしょうか? sshd のセッションを維持したまま、設定を反映する方法です。

sshd には、プロセスを終了せずに、設定を読み込む機能が実装されています。

Linux や FreeBSD などの Unix では、シグナル(signal)と呼ばれる機能があります。多くのデーモンプログラムは、シグナルを受信したときに、動作をするように実装されています。たとえば、デーモンプロセスを終了するときには、 SIGTERM(TERM) を送信します。

sshd の設定を読み込みさせる場合には、 sshd にSIGHUP(HUP) を送信します。

CentOSの場合

systemd 系の CentOS では、 systemctl コマンドを利用して、設定をリロードします。
systemctl reload sshd

最初に sshd が起動した状態です。
 6月 30 23:37:21 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...
 6月 30 23:37:21 localhost.localdomain sshd[1129]: Server listening on 0.0.0.0 port 22.
 6月 30 23:37:21 localhost.localdomain sshd[1129]: Server listening on :: port 22.
 6月 30 23:37:21 localhost.localdomain systemd[1]: Started OpenSSH server daemon.

上記の状態から systemctl コマンドを用いて reload を実行した結果、以下のログが出力されました。
 7月 01 00:01:13 localhost.localdomain systemd[1]: Reloading OpenSSH server daemon.
 7月 01 00:01:13 localhost.localdomain systemd[1]: Reloaded OpenSSH server daemon.
 7月 01 00:01:13 localhost.localdomain sshd[1129]: Received SIGHUP; restarting.
 7月 01 00:01:13 localhost.localdomain sshd[1129]: Server listening on 0.0.0.0 port 22.
 7月 01 00:01:13 localhost.localdomain sshd[1129]: Server listening on :: port 22.

Ubuntu の場合

Ubuntu の場合は、以下のコマンドで reload が実行できます。
sudo /etc/init.d/ssh reload

FreeBSDの場合

FreeBSDの設定ファイル

sshdの設定ファイルは、FreeBSDの場合 /etc/ssh/sshd_config です。

FreeBSDのsshdNo設定を反映する方法

sshd_config を更新したとき、sshdに設定を反映するには、/etc/rc.d/sshdスクリプトとreloadオプションを使います。

% sudo /etc/rc.d/sshd reload
Performing sanity check on sshd configuration.
%

または、 service コマンドを利用して reload することもできます。

% sudo service sshd reload
Performing sanity check on sshd configuration.
%

以前は、 Reloading sshd config files. とメッセージが表示されていました。

FreeBSDのsshdスクリプトの実装について

/etc/rc.d/sshdスクリプトの中で実際に何をやっているかというと、 sshdのpidファイル /var/run/sshd.pid を確認し、sshdプロセスが存在しているか確認し、sshdが生きているなら killコマンドで HUP しているだけです。

下記コマンドでも同じことが実現できます。
sudo kill -HUP `cat /var/run/sshd.pid`

killコマンドを直接叩くと、誤ったオプションでsshdを殺してしまったりと、オペレーションミスが起こりそうなので、やらないほうがよいでしょう。習慣的に、kill -KILLとかやってしまう人は危ないですね。
参照しているページ (サイト内): [2009-03-03-1] [2008-10-19-1] [2008-08-17-1]

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー