9 votes

Comment relire le fichier de configuration de sshd (sans tuer les connexions ssh) ?

Comment puis-je faire pour que le serveur ssh relise son fichier de configuration (/etc/sshd_config), sans tuer les connexions ssh existantes?

ÉDITION: Si j'exécute kill -HUP je tue la connexion.

0 votes

Avez-vous essayé d'envoyer un signal d'arrêt : kill -HUP ? Selon man sshd : sshd relit son fichier de configuration lorsqu'il reçoit un signal d'arrêt, SIGHUP. (Vous pouvez trouver le PID de sshd avec ps -ef|grep sshd. S'il y a plus d'un processus sshd, envoyez HUP à tous.)

0 votes

(voir ma dernière édition)

6 votes

Oui, vous avez raison, si vous HUP un processus sshd qui a une connexion ouverte, sshd se termine. Cependant, l'envoi d'un signal HUP au sshd principal, c'est-à-dire le parent sshd qui crée un nouveau démon pour chaque connexion entrante, aura l'effet désiré. Sur OS X, cependant, il n'y a pas de sshd principal : sshd est démarré par launchd via launchproxy avec l'option -i, qui indique à sshd qu'il est exécuté à partir de inetd et démarré à la demande, lorsque launchd reçoit une demande. Avec cette configuration, chaque connexion SSH reçoit un sshd fraîchement démarré configuré avec la version la plus récente de son fichier de configuration.

6voto

Hvisage Points 210

Sshd ne "re-lit" pas son fichier de configuration, il redémarre lui-même (voir man sshd(8)), cependant, il ne devrait pas tuer les processus enfants/connections si vous envoyez un SIGHUP au PARENT de tous. C'est lorsque vous parlez de sshd qui se lie au port 22, comme c'est "habituel" avec Linux/FreeBSD/etc. [il y a des exceptions et des raisons d'administration système pour suivre la voie de MacOSX]

CEPENDANT MacOSX a launchd qui écoute et gère le port 22 (de ma machine 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)

C'est launchd qui pourrait avoir besoin d'être "redémarré" sur macosx, ou informé des différents ports sur lesquels écouter pour sshd, car launchd lancera un nouveau sshd pour chaque connexion sur le port 22 qui arrive.

vérifiez ce qui suit :

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$

J'ai utilisé ssh vers mon routeur et retour pour montrer le problème, et vous remarquerez que les deux processus sont déjà "possédés" par moi. Comparez cela à un système Linux (mon routeur) où vous remarquerez le troisième "vrai" sshd qui est possédé par root :

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:~$

1voto

Thomas Points 149

La ligne suivante vérifie d'abord la configuration et obtient le PID du processus principal en conservant tous les autres (testé sous Linux, zsh) :

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

0 votes

Ne fonctionne PAS sur macOS... Il n'y a aucun processus sshd.

-2voto

Smith17 Points 31

Tout simplement :

~# tuer -HUP $(pidof sshd)

0 votes

Ne fonctionne PAS sur macOS... Il n'y a pas de processus sshd.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X