Bagaimana agar sshd membaca kembali file konfigurasi (tanpa mematikan koneksi ssh)?


8

Bagaimana saya bisa membuat server ssh membaca kembali file konfigurasinya ( /etc/sshd_config), tanpa mematikan koneksi ssh yang ada?

EDIT: Jika saya menjalankan kill -HUP <SSHD_PID>saya mematikan koneksi.


Apakah Anda mencoba mengirim sinyal hangup: kill -HUP <PID of sshd>? Menurut man sshd: sshd rereads its configuration file when it receives a hangup signal, SIGHUP. (Anda dapat menemukan PID sshddengan ps -ef|grep sshd. Jika ada lebih dari satu sshdproses, kirim HUPke semuanya.)
jaume

(lihat hasil edit terakhir saya)
kjo

6
Ya, Anda benar, jika Anda HUP sshdproses yang memiliki koneksi terbuka, sshdberakhir. Namun, mengirimkan sinyal HUP ke utama sshd, yaitu, orangtua sshdyang mengarang daemon baru untuk setiap koneksi yang masuk, akan memiliki efek yang diinginkan. Pada OS X, meskipun, tidak ada utama sshd: sshddimulai dengan launchdmelalui launchproxydengan opsi -i, yang memberitahu sshdbahwa itu berjalan dari inetddan mulai pada permintaan, ketika launchdmenerima permintaan. Dengan pengaturan ini, setiap koneksi SSH baru mulai sshddikonfigurasikan dengan versi terbaru file konfigurasi-nya.
jaume

Jawaban:


5

sshd tidak "membaca kembali" itu file konfigurasi, itu me-restart sendiri (lihat man sshd (8)), namun, itu tidak boleh membunuh anak / koneksi jika Anda mengirim SIGHUP ke ORANGTUA dari mereka semua. Saat itulah Anda berbicara tentang sshd yang mengikat ke port 22, seperti dalam "biasa" dengan Linux / FreeBSD / etc. [ada pengecualian dan alasan sysadmin mengapa harus mengikuti rute jenis MacOSX]

NAMUN MacOSX telah launchd sebagai yang mendengarkan dan menangani port 22 (dari mesin 10.10.4 saya):

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)

Ini launchd yang mungkin perlu "restart" di macosx, atau diberitahu tentang port yang berbeda untuk mendengarkan sshd, karena launchd akan menelurkan sshd baru untuk setiap koneksi port 22 yang masuk.

periksa hal berikut:

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$

Saya ssh akan ke router saya dan kembali untuk menunjukkan masalah, dan Anda akan melihat bahwa kedua proses sudah "dimiliki" oleh saya. Bandingkan ini dengan sistem Linux (roouter saya) di mana Anda akan melihat sshd "nyata" ketiga yang dimiliki oleh 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

Baris berikut memeriksa konfigurasi terlebih dahulu dan mendapatkan PID dari proses utama menjaga semua yang lain (diuji di Linux, zsh):

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

TIDAK bekerja pada macOS ... Tidak ada sshdproses.
Per Lundberg

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.