sshdにその構成ファイルを(ssh接続を強制終了せずに)再読み込みさせる方法は?


8

/etc/sshd_config既存のssh接続を終了せずに、sshサーバーに構成ファイル()を再度読み込ませるにはどうすればよいですか?

編集:私が実行するkill -HUP <SSHD_PID>と、接続を強制終了します。


ハングアップシグナルを送信してみましたkill -HUP <PID of sshd>か?によるとman sshdsshd rereads its configuration file when it receives a hangup signal, SIGHUP。(sshdwith のPIDを見つけることができますps -ef|grep sshd。複数のsshdプロセスがある場合はHUP、すべてに送信してください。)
jaume

(私の最新の編集を参照)
kjo

6
はい、そうです。sshd開いている接続を持つプロセスをHUPすると、sshd終了します。ただし、HUPシグナルをメインsshd(つまり、sshd着信接続ごとに新しいデーモンをフォークする親)に送信すると、望ましい効果が得られます。OS X上で、しかし、何のメインはありませんsshdsshdによって開始されlaunchdlaunchproxyオプションと-i伝え、sshdそれはから実行だことinetdとする場合、必要に応じて起動launchd要求を受信します。この設定により、すべてのSSH接続は、sshdその構成ファイルの最新バージョンで構成されたばかりで新たに開始されます。
jaume 2013

回答:


5

sshdは設定ファイルを「再読み取り」せず、再起動します(man sshd(8)を参照)。ただし、すべての親にSIGHUPを送信した場合、子/接続は強制終了されません。これは、Linux / FreeBSD / etcでの「通常」のように、ポート22にバインドするsshdについて話しているときです。[MacOSXタイプのルートをたどる理由とシステム管理者の理由があります]

ただし、 MacOSXはポート22(私の10.10.4マシンから)をリッスンして処理するものとして起動しました。

BlackYos:~ hvisage$ sudo lsof -i :22
Password:
COMMAND  PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
launchd    1    root   57u  IPv4 0xdb59a664e4b34941      0t0  TCP blackyos:ssh->hvs:39093 (ESTABLISHED)
launchd    1    root   58u  IPv4 0xdb59a664e4b34941      0t0  TCP blackyos:ssh->hvs:39093 (ESTABLISHED)
launchd    1    root   62u  IPv6 0xdb59a664c78cd671      0t0  TCP *:ssh (LISTEN)
launchd    1    root   66u  IPv4 0xdb59a664c78d2e21      0t0  TCP *:ssh (LISTEN)
launchd    1    root   67u  IPv6 0xdb59a664c78cd671      0t0  TCP *:ssh (LISTEN)
launchd    1    root   68u  IPv4 0xdb59a664c78d2e21      0t0  TCP *:ssh (LISTEN)
ssh     1262 hvisage    3u  IPv4 0xdb59a664e59313b1      0t0  TCP blackyos:51628->hvs:ssh (ESTABLISHED)
sshd    1272    root    4u  IPv4 0xdb59a664e4b34941      0t0  TCP blackyos:ssh->hvs:39093 (ESTABLISHED)
sshd    1272    root    5u  IPv4 0xdb59a664e4b34941      0t0  TCP blackyos:ssh->hvs:39093 (ESTABLISHED)
sshd    1274 hvisage    4u  IPv4 0xdb59a664e4b34941      0t0  TCP blackyos:ssh->hvs:39093 (ESTABLISHED)
sshd    1274 hvisage    5u  IPv4 0xdb59a664e4b34941      0t0  TCP blackyos:ssh->hvs:39093 (ESTABLISHED)

これは、macosxで「再起動」する必要がある可能性があるlaunchdです。または、launchdがポート22接続ごとに新しいsshdを生成するため、sshdをリッスンするために異なるポートについて通知されます。

以下を確認してください。

BlackYos:~ hvisage$ sudo ps -ef |grep -i ssh
  501  1263     1   0  6:46PM ??         0:00.06 /usr/bin/ssh-agent -l
    0  1272     1   0  6:46PM ??         0:00.40 sshd: hvisage [priv]
  501  1274  1272   0  6:46PM ??         0:00.03 sshd: hvisage@ttys004
  501  1262   570   0  6:46PM ttys001    0:00.05 ssh -v hvs
  501  1303  1275   0  6:50PM ttys004    0:00.00 grep -i ssh
BlackYos:~ hvisage$

私はルーターにsshして戻って問題を説明しましたが、2つのプロセスがすでに "所有"されていることがわかります。これを、rootが所有する3番目の「実際の」sshdに気付くLinuxシステム(私のルーター)と比較してください。

hvisage@hvs:~$ ps -ef |grep -i ssh
root      4053     1  0 Jul11 ?        00:04:22 /usr/sbin/sshguard -i /var/run/sshguard.pid -l /var/log/auth.log -w /etc/sshguard/whitelist -a 40 -p 420 -s 1200
root     16244 30219  0 18:46 ?        00:00:00 sshd: hvisage [priv]
hvisage  16249 16244  0 18:46 ?        00:00:00 sshd: hvisage@pts/0
hvisage  16563 16250  0 18:52 pts/0    00:00:00 grep -i ssh
root     30219     1  0 Aug09 ?        00:00:00 /usr/sbin/sshd
hvisage@hvs:~$

1

次の行では、最初に構成を確認し、メインプロセスのPIDを取得して、他のすべてを維持しています(Linux、zshでテスト済み)。

if /usr/sbin/sshd -t; then kill -HUP `ps aux | grep "/usr/sbin/sshd" | grep -v grep | awk '{ print $2 }'`; fi

macOSでは動作しません... sshdプロセスはありません。
Lundbergによる2017

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.