วิธีการให้ sshd อ่านไฟล์ปรับแต่งอีกครั้ง (โดยไม่ต้องฆ่าการเชื่อมต่อ ssh)?


8

ฉันจะให้เซิร์ฟเวอร์ ssh อ่านไฟล์การกำหนดค่า ( /etc/sshd_config) อีกครั้งโดยไม่ฆ่าการเชื่อมต่อ ssh ที่มีอยู่ได้อย่างไร

แก้ไข: ถ้าฉันเรียกใช้kill -HUP <SSHD_PID>ฉันจะฆ่าการเชื่อมต่อ


คุณลองส่งสัญญาณ Hangup kill -HUP <PID of sshd>หรือไม่? ตามที่:man sshd sshd rereads its configuration file when it receives a hangup signal, SIGHUP(คุณสามารถหา PID ของsshdด้วยps -ef|grep sshdหากมีมากกว่าหนึ่ง. sshdขั้นตอนการส่งHUPทั้งหมดของพวกเขา.)
Jaume

(ดูการแก้ไขล่าสุดของฉัน)
kjo

6
ใช่คุณพูดถูกถ้าคุณ HUP sshdกระบวนการที่มีการเชื่อมต่อแบบเปิดsshdสิ้นสุดลง อย่างไรก็ตามการส่งสัญญาณ HUP ไปยังตัวหลักsshdกล่าวคือพาเรนต์sshdที่ใช้ daemon ใหม่สำหรับการเชื่อมต่อขาเข้าแต่ละครั้งจะมีผลที่ต้องการ ใน OS X แต่ไม่มีหลักsshd: sshdจะเริ่มต้นโดยlaunchdผ่านการlaunchproxyมีตัวเลือก-iซึ่งจะบอกsshdว่ามันวิ่งออกจากinetdและเริ่มที่ต้องการเมื่อlaunchdได้รับการร้องขอ ด้วยการตั้งค่านี้การเชื่อมต่อ SSH ทุกครั้งจะเริ่มต้นใหม่sshdด้วยไฟล์ config รุ่นล่าสุด
Jaume

คำตอบ:


5

sshd ไม่ได้ "อ่านซ้ำ" เป็นไฟล์กำหนดค่ามันจะรีสตาร์ทเอง (อ้างถึง man sshd (8)) อย่างไรก็ตามไม่ควรฆ่าเด็ก / การเชื่อมต่อหากคุณส่ง SIGHUP ไปยังผู้ปกครองของพวกเขาทั้งหมด นั่นคือเมื่อคุณกำลังพูดถึง sshd ที่ผูกกับพอร์ต 22 เช่นเดียวกับใน "ปกติ" กับ Linux / FreeBSD / etc [มีข้อยกเว้นและดูแลระบบสาเหตุที่ต้องทำตามเส้นทางประเภท MacOSX]

HOWEVER MacOSX ได้เปิดตัวเป็นผู้ฟังและจัดการพอร์ต 22 (จากเครื่อง 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)

มันเป็น launchd ที่อาจต้อง "เริ่มต้นใหม่" บน macosx หรือบอกเกี่ยวกับพอร์ตที่แตกต่างกันเพื่อฟังสำหรับ sshd เนื่องจาก launchd จะวางไข่ sshd ใหม่สำหรับการเชื่อมต่อแต่ละพอร์ตที่ 22 ที่มา

ตรวจสอบสิ่งต่อไปนี้:

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$

ฉันได้ไปที่เราเตอร์แล้วกลับมาสาธิตปัญหาอีกครั้งและคุณจะสังเกตเห็นว่ากระบวนการทั้งสองนี้เป็นของฉัน "เป็นเจ้าของ" แล้ว เปรียบเทียบสิ่งนี้กับระบบ Linux (my roouter) ซึ่งคุณจะสังเกตเห็น sshd "ของจริง" ตัวที่สามที่ 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

บรรทัดต่อไปนี้จะตรวจสอบการกำหนดค่าก่อนและรับ PID ของกระบวนการหลักที่เก็บรักษาไว้ทั้งหมด (ทดสอบใน Linux, zsh):

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

ไม่ทำงานบน macOS ... ไม่มีsshdกระบวนการ
ต่อ Lundberg

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.