Come avere sshd rileggere il suo file di configurazione (senza uccidere le connessioni ssh)?


8

Come posso ottenere il server ssh per rileggere il suo file di configurazione ( /etc/sshd_config), senza uccidere le connessioni ssh esistenti?

EDIT: Se corro kill -HUP <SSHD_PID>io uccido il collegamento.


Hai provato l'invio di un segnale di hangup: kill -HUP <PID of sshd>? Secondo man sshd: sshd rereads its configuration file when it receives a hangup signal, SIGHUP. (Puoi trovare il PID di sshdcon ps -ef|grep sshd. Se esiste più di un sshdprocesso, invialo HUPa tutti.)
Jaume

(vedi la mia ultima modifica)
kjo,

6
Sì, hai ragione, se HUP termina un sshdprocesso che ha una connessione aperta sshd. Tuttavia, l'invio di un segnale HUP al principale sshd, ovvero il genitore sshdche genera un nuovo demone per ogni connessione in entrata, avrà l'effetto desiderato. Su OS X, tuttavia, non esiste un elemento principale sshd: sshdviene avviato launchdtramite l' launchproxyopzione -i, che indica sshdche viene eseguito inetde avviato su richiesta, quando launchdriceve una richiesta. Con questa configurazione, ogni connessione SSH viene appena sshdconfigurata con la versione più recente del suo file di configurazione.
Jaume,

Risposte:


5

sshd non "rilegge" il suo file di configurazione, si riavvia da solo (fare riferimento a man sshd (8)), tuttavia, non dovrebbe uccidere il figlio / connessioni se hai inviato SIGHUP al GENITORE di tutti. Questo è quando stai parlando di sshd che si lega alla porta 22, come nel "solito" con Linux / FreeBSD / etc. [ci sono eccezioni e ragioni per l'amministratore di sistema per seguire il percorso del tipo MacOSX]

TUTTAVIA MacOSX è stato lanciato come quello che ascolta e gestisce la porta 22 (dalla mia macchina 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)

È un launchd che potrebbe aver bisogno di essere "riavviato" su macosx, o di diverse porte su cui ascoltare sshd, poiché launchd genererà un nuovo sshd per ogni connessione della porta 22 che arriva.

controlla quanto segue:

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$

Ho mandato il mio router e ritorno per dimostrare il problema e noterai che i due processi sono già "di mia proprietà". Confrontalo con un sistema Linux (il mio roouter) in cui noterai la terza "vera" sshd di proprietà di 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:~$

1

La riga seguente controlla prima la configurazione e ottiene il PID del processo principale mantenendo tutti gli altri (testati in Linux, zsh):

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

NON funziona su macOS ... Non esiste alcun sshdprocesso.
Per Lundberg,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.