¿Cómo puedo hacer que el servidor ssh vuelva a leer su archivo de configuración ( /etc/sshd_config
), sin eliminar las conexiones ssh existentes?
EDITAR: Si ejecuto kill -HUP <SSHD_PID>
I mato la conexión.
¿Cómo puedo hacer que el servidor ssh vuelva a leer su archivo de configuración ( /etc/sshd_config
), sin eliminar las conexiones ssh existentes?
EDITAR: Si ejecuto kill -HUP <SSHD_PID>
I mato la conexión.
sshd no "re-lee" su archivo de configuración, se reinicia solo (refiérase a man sshd (8)), sin embargo, no debería matar al niño / conexiones si enviaba SIGHUP al PADRE de ellos todos. Es decir, cuando se habla de sshd que se enlaza al puerto 22, como en el "habitual" con Linux / FreeBSD / etc. [hay excepciones y razones sysadmin por las que se debe seguir la ruta de tipo MacOSX]
SIN EMBARGO MacOSX se ha lanzado como el que escucha y maneja el puerto 22 (desde mi máquina 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)
Es posible que sea necesario "reiniciar" el comando launchd en macosx, o informarle acerca de los diferentes puertos en los que se debe escuchar para sshd, ya que launchd generará un nuevo sshd para cada conexión del puerto 22 que viene.
comprueba lo siguiente:
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$
He guardado mi router y he vuelto para demostrar el problema, y te darás cuenta de que los dos procesos ya son "de mi propiedad". Compare esto con un sistema Linux (mi roouter) donde notará el tercer sshd "real" que es propiedad de 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:~$
La línea siguiente comprueba primero la configuración y obtiene el PID del proceso principal, manteniendo todos los demás (probado en Linux, zsh):
if /usr/sbin/sshd -t; then kill -HUP 'ps aux | grep "/usr/sbin/sshd" | grep -v grep | awk '{ print $2 }''; fi
Simplemente:
~# kill -HUP $(pidof sshd)