Wie kann sshd seine Konfigurationsdatei erneut lesen (ohne ssh-Verbindungen zu beenden)?

8

Wie kann ich den SSH-Server dazu bringen, seine Konfigurationsdatei ( /etc/sshd_config) erneut zu lesen , ohne vorhandene SSH-Verbindungen zu beenden?

EDIT: Wenn ich laufe , beende kill -HUP <SSHD_PID>ich die Verbindung.

kjo
quelle
Haben Sie versucht, ein Auflegesignal zu senden : kill -HUP <PID of sshd>? Nach man sshd: sshd rereads its configuration file when it receives a hangup signal, SIGHUP. (Sie können die PID von sshdmit finden ps -ef|grep sshd. Wenn es mehr als einen sshdProzess gibt, senden Sie HUPan alle von ihnen.)
jaume
(siehe meine letzte
Änderung
6
Ja, Sie haben Recht, wenn Sie einen sshdProzess mit offener Verbindung HUP sshdbeenden. Das Senden eines HUP-Signals an das Hauptnetzwerk sshd, dh das übergeordnete Signal, das sshdfür jede eingehende Verbindung einen neuen Dämon erstellt, hat jedoch den gewünschten Effekt. Unter O X gibt es aber kein Haupt sshd: sshdwird gestartet , indem launchddurch launchproxymit der Option -i, die sagt , sshddass es lief aus inetdund beginnt , auf Anfrage, wenn launchdeine Anforderung empfängt. Mit diesem Setup wird jede SSH-Verbindung neu gestartet und sshdmit der neuesten Version ihrer Konfigurationsdatei konfiguriert.
Jaume

Antworten:

5

sshd "liest" seine Konfigurationsdatei nicht erneut, sondern startet sich selbst neu (siehe man sshd (8)). Es sollte jedoch das Kind / die Verbindungen nicht beenden, wenn Sie das SIGHUP an die ELTERN von allen gesendet haben. Das ist, wenn Sie über sshd sprechen, das an Port 22 bindet, wie im "üblichen" mit Linux / FreeBSD / etc. [Es gibt Ausnahmen und Systemadministratorgründe, warum Sie der Route vom Typ MacOSX folgen sollten]

MacOSX wurde jedoch als derjenige gestartet, der Port 22 (von meinem 10.10.4-Computer) abhört und verarbeitet:

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)

Es ist startd, das unter Macosx möglicherweise "neu gestartet" werden muss oder über verschiedene Ports informiert werden muss, um auf sshd zu warten, da launchd für jede eingehende Port 22-Verbindung ein neues sshd erzeugt.

Überprüfe das Folgende:

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$

Ich habe mich an meinen Router und zurück gewandt, um das Problem zu demonstrieren, und Sie werden feststellen, dass die beiden Prozesse bereits "im Besitz" von mir sind. Vergleichen Sie dies mit einem Linux-System (meinem Roouter), auf dem Sie die dritte "echte" SSHD bemerken, die root gehört:

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:~$
Hvisage
quelle
1

Die folgende Zeile überprüft zuerst die Konfiguration und ermittelt die PID des Hauptprozesses, wobei alle anderen (unter Linux, zsh getestet) beibehalten werden:

if /usr/sbin/sshd -t; then kill -HUP `ps aux | grep "/usr/sbin/sshd" | grep -v grep | awk '{ print $2 }'`; fi
Thomas
quelle
Funktioniert NICHT unter macOS ... Es gibt keinen sshdProzess.
Per Lundberg
-2

Einfach:

~# kill -HUP $(pidof sshd)
Flüchtig
quelle
Funktioniert NICHT unter macOS ... Es gibt keinen sshdProzess.
Per Lundberg