ทำการเปลี่ยนแปลงในไฟล์ sshd_config โดยไม่ต้องรีบูตเซิร์ฟเวอร์


33

ฉันเปลี่ยนการกำหนดค่าในไฟล์

/etc/ssh/sshd_config

แต่ได้ผลหลังจากรีบูตเซิร์ฟเวอร์เท่านั้น วิธีการเปลี่ยนแปลงโดยไม่ต้องรีบูตเครื่องเซิร์ฟเวอร์?


คุณอาจใช้sudo service ssh restartเพื่อเริ่มบริการใหม่เพื่อให้มีผล แต่จำไว้ว่าถ้าคุณเชื่อมต่อผ่าน SSH เซสชันของคุณจะถูกยกเลิก
AzkerM

คำตอบ:


39

เพียงเริ่มบริการ sshd:

sudo service sshd restart

หรือ:

sudo /etc/init.d/sshd restart

6
ถ้าฉันใช้การเชื่อมต่อแบบ SSH?
อันวาร์

7
ไม่มีอะไร ... เด้ง sshd ฉลาดพอที่จะอนุญาตการเชื่อมต่อ ssh ที่มีอยู่ให้ดำเนินต่อไปอย่างไม่
สะทกสะท้าน

4
ฉันไม่แนะนำให้ทำงานอะไรใน /etc/init.d โดยตรง ใช้คำสั่ง "บริการ" บริการส่วนใหญ่จะไม่สนใจ แต่มีบางอย่างที่ทำเพราะพวกเขาได้รับผลกระทบจากตัวแปรสภาพแวดล้อม "บริการ" ช่วยให้แน่ใจว่าสภาพแวดล้อมจะถูกกำจัด ตัวอย่างเช่นการรัน "sudo" จะปล่อยให้ตัวแปรสภาวะแวดล้อม HOME ไปยังโฮมไดเร็กทอรีที่ไม่ใช่รูทของคุณ
Chris Cogdon

5
sudo service ssh restart

จะไม่ทำมัน คุณต้องรีสตาร์ท sshd ไม่ใช่ ssh:

sudo service sshd restart

3
ขึ้นอยู่กับการกำหนดค่าระบบ ใน Lubuntu 14.04 ใช้sudo service ssh restartงานได้ดีในขณะที่sudo service sshd restartรายงาน "sshd: บริการที่ไม่รู้จัก" ไม่แน่ใจว่าทำไมถึงแตกต่างกันไป ...
schulwitz

3

มีวิธีที่ล่วงล้ำน้อยลงในการทำเช่นนี้โดยไม่ต้องเริ่มบริการ SSH ใหม่

จากman sshd:

sshd อ่านไฟล์กำหนดค่าอีกครั้งเมื่อได้รับสัญญาณ Hangup, SIGHUP โดยดำเนินการด้วยชื่อและตัวเลือกที่เริ่มต้นด้วยเช่น / usr / sbin / sshd

ดังนั้นคุณสามารถใช้คำสั่งดังต่อไปนี้เพื่อส่ง SIGHUP ไปยังกระบวนการเซิร์ฟเวอร์ SSH:

sudo kill -SIGHUP $(pgrep -f "sshd -D")

pgrep -f "sshd -D"ส่วนหนึ่งจะกลับมาเพียง PID ของกระบวนการภูต sshd ที่ฟังสำหรับการเชื่อมต่อใหม่เนื่องจากมีแนวโน้มที่จะเป็น PIDs อื่น ๆ สำหรับการใช้งานในแต่ละเซสชั่นที่ไม่จำเป็นต้องส่งสัญญาณ


2
นี่เป็นวิธีที่ปลอดภัยที่สุด ( stribika.github.io/2015/01/04/secure-secure-shell.html ) วิธีโหลดการกำหนดค่าใหม่: "ระวังอย่างยิ่งเมื่อตั้งค่า SSH บนโฮสต์ระยะไกล รีสตาร์ท sshd แต่คุณสามารถส่งสัญญาณ SIGHUP เพื่อโหลดการกำหนดค่าโดยไม่ฆ่าเซสชันของคุณคุณสามารถระวังได้มากขึ้นด้วยการเริ่มต้นอินสแตนซ์ sshd ใหม่บนพอร์ตอื่นและทำการทดสอบ "
Adriano Lucas

มีความแตกต่างที่มีความหมายsudo pkill -HUP sshdไหม?
AdamKalisz

@ อดัมคุณเพียงแค่ต้องการ HUP กระบวนการฟังไม่ใช่ลูกค้าที่ใช้งานซึ่งเป็นsshdกระบวนการ sudo pkill -HUP -f "sshd -D"เป็นทางเลือกที่ดึงดูด แต่แล้ว pkill ส่งสัญญาณพาเรนต์ของตัวเองsudoเนื่องจากบรรทัดคำสั่งแบบเต็มตรงกับรูปแบบการค้นหาของมันเอง คุณสามารถสร้างรูปแบบที่ไม่ตรงกับตัวเอง... -f "sshd -[D]แต่สิ่งที่ทำให้สับสนเล็กน้อย ฉันคิดว่าวิธีการ pgrep นั้นง่ายกว่าสำหรับผู้เรียนในการพันหัว
สตีเวนเค

2

เช่นเดียวกับการตรวจสอบราก

service --status-all | grep ssh

ฉันไม่มีsshdบริการ แต่มีsshบริการบนเซิร์ฟเวอร์ Ubuntu แล้วก็

service ssh restart

2

สำหรับ Systemd Systems - ค่าเริ่มต้นของ Ubuntu

sudo systemctl reload sshd.service

หรือ

 sudo systemctl reload sshd

หรือ

 sudo /bin/systemctl reload sshd.service

สำหรับระบบ Sysvinit

sudo service sshd reload

หรือ

sudo /etc/init.d/sshd reload

0

การโหลดซ้ำอาจเป็นทางเลือกที่ดีกว่าในการรีสตาร์ท

sudo service sshd reload

ภายใต้ประทุนมันจะส่งHUPสัญญาณไปยังกระบวนการภูต sshd เกือบทางเดียวกันสตีเว่น K แล้วตอบ ความแตกต่างก็คือตัวแปรนี้ใช้killprocฟังก์ชั่นแทนkillคำสั่งโดยตรงเพื่อส่งสัญญาณอย่างแม่นยำยิ่งขึ้น (เพื่อลดข้อผิดพลาดที่อาจเกิดขึ้นจากการส่งสัญญาณไปยังกระบวนการที่ไม่ถูกต้อง) การกำหนดค่าจะอ่านซ้ำโดยไม่ต้องเริ่ม / หยุดบริการ

แน่นอนว่ามันคุ้มค่าที่จะรู้ว่า SSH deamon นั้นถูกเรียกว่าเป็นจริงอย่างไรเมื่อคนอื่นพูดถึง

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