เริ่ม SSH โดยอัตโนมัติเมื่อบูต


15

สร้างแบรนด์ใหม่ให้กับ linux และ Ubnuntu โดยสมบูรณ์ การตั้งค่าเครื่องเพื่อเรียนรู้ลึก / เครือข่ายประสาท จนถึงตอนนี้ก็เป็นไปด้วยดี เตรียมพร้อมทุกอย่างที่ติดตั้งและใช้งาน ฉันต้องการ ssh จากแล็ปท็อป Mac ของฉันเพื่อใช้ระบบ ฉันติดตั้งopensshและทำให้มันใช้งานได้

อย่างไรก็ตามเมื่อฉันรีสตาร์ทเครื่องเซิร์ฟเวอร์ ssh ไม่รีสตาร์ท ฉันจะตรวจสอบด้วยsudo service ssh statusและรายงานและข้อผิดพลาด ฉันสามารถเริ่มต้นได้และทุกอย่างทำงานได้ดี

ความคิดแรกของฉันคือฉันต้องบอกให้เริ่มการรีบูตและฉันพบกระทู้นี้ซึ่งบอกว่าควรเริ่มต้นโดยค่าเริ่มต้นและฉันไม่จำเป็นต้องเพิ่ม chrontab หรืออะไรแบบนั้น ดังนั้นฉันไม่คิดว่าเป็นอย่างนั้น

จากนั้นฉันได้พบเธรดนี้ซึ่งแนะนำให้ใช้คำสั่งsudo update-rc.d ssh defaultsแต่เธรดนั้นค่อนข้างเก่าและดูเหมือนว่าคำตอบนั้นอาจไม่ถูกต้องเลยใช่ไหม

ดังนั้นฉันจึงพบกระทู้นี้ซึ่งแนะนำให้ใส่เครื่องหมายListenAddressบรรทัดในไฟล์sshd_config โดยพื้นฐานแล้วจะบอกว่าหากใช้ ListenAddress อาจพยายามรับ IP ก่อนที่จะได้รับการกำหนดโดย DCHP ดังนั้นการเริ่มต้นจึงล้มเหลว ซึ่งทำให้รู้สึก แต่ฉันต้องการพารามิเตอร์นั้นเพื่อให้การส่งต่อพอร์ตของฉันทำงานผ่านเครือข่ายในบ้านของฉัน

เอกสารนี้ภายใต้รายการสำหรับListenAddressบอกว่า

The default is to listen on all local addresses.

ดังนั้นฉันอาจไม่ต้องการใช้การส่งต่อพอร์ตหรือไม่

ฉันติดตามเธรดก่อนหน้าไปยังรายงานข้อผิดพลาดนี้ซึ่งค่อนข้างเก่า แต่แนะนำให้ใช้ตัวจัดการเครือข่ายเพื่อรีสตาร์ท ssh ทุกครั้งที่ netmanager ได้รับ IP ใหม่

echo /etc/init.d/ssh restart > /etc/NetworkManager/dispatcher.d/10ssh
chmod 755 /etc/NetworkManager/dispatcher.d/10ssh

นั่นเป็นอะไรที่มากกว่า noobie นี้สามารถประเมินได้ ณ จุดนี้ ปลอดภัยไหม นั่นเป็นวิธีที่จะทำสิ่งนี้หรือไม่? ในช่วง 7 ปีที่ผ่านมามีการทำงานอย่างอื่นหรือไม่

คำแนะนำใด ๆ ที่จะดี ขอบคุณ


ใช่ฉันเพิ่งติดตั้งแพ็คเกจ openssh-server และกำหนดค่าอย่างถูกต้อง เซิร์ฟเวอร์ ssh ของฉันเริ่มต้นอย่างถูกต้องโดยอัตโนมัติทุกครั้งตั้งแต่ ไม่จำเป็นต้องเล่นซอเพิ่มเติมใด ๆ เลย
user535733

1
คุณใช้การส่งต่อพอร์ตและคุณไม่จำเป็นต้องใช้พารามิเตอร์ ListenAddress หรือไม่ ถ้าเป็นเช่นนั้นคุณสามารถแบ่งปันสิ่งที่ "กำหนดค่าอย่างถูกต้อง" รวมถึง?
Rothrock

ทั้งหมดนี้คุณไม่ได้ให้ข้อมูลใด ๆ เกี่ยวกับสถานะของ SSH เมื่อคุณบูทครั้งแรก สิ่งที่ไม่systemctl status sshเอาท์พุท?
muru

ปัญหาของคุณคล้ายกับปัญหานี้ (เห็นได้ชัดว่าไม่ได้รับการแก้ไข) SSH Daemon ไม่เริ่มวิธีปกติ - คุณช่วยแก้ไขคำถามของคุณให้ครอบคลุมถึงผลลัพธ์ของsystemctl status NetworkManager-wait-online.service
steeldriver

1
คุณมีการตั้งค่าการส่งต่อพอร์ตอย่างไร ฉันไม่ใช้ ListenAddress เลยและทุกอย่างทำงานได้ดีบนโฮมเซิร์ฟเวอร์ของฉัน เราเตอร์ของฉันส่งต่อสิ่งที่มาในพอร์ตฉันระบุ (22 ถ้าคุณต้องการพอร์ตมาตรฐาน แต่คุณสามารถใช้อะไรก็ได้ตราบใดที่มันไม่ขัดแย้งกับบริการอื่น ๆ บนเครือข่าย intl.) ไปยังคอมพิวเตอร์ที่ฉันต้องการ ตัวอย่างเช่นสิ่งใดก็ตามที่เข้ามาในพอร์ต 12345 จะถูกส่งต่อไปยังพอร์ต 22 บนเซิร์ฟเวอร์ CentOS ของฉัน สิ่งใดก็ตามที่เข้ามาใน 12346 จะถูกส่งต่อไปยังพอร์ต 22 ของ RasPi ที่ไม่มีหัวของฉัน สิ่งใดก็ตามที่เข้ามาใน 12347 ไปที่พอร์ต 6697 สำหรับนักโกหกของ IRC ใน RasPi ของฉัน
RobertRSeattle

คำตอบ:


43

คุณได้ลองเพียงแค่ตั้งค่า

sudo systemctl enable ssh

?

นั่นคือวิธีที่ฉันตั้งค่า ssh ให้ทำงานเมื่อเริ่มต้น

**** ฉันจะออกจากส่วนด้านบนของคำตอบในกรณีที่เป็นประโยชน์สำหรับผู้อื่นที่เจอโพสต์นี้ ****

ความคิดเห็นของฉันจากด้านบน:

คุณมีการตั้งค่าการส่งต่อพอร์ตอย่างไร ฉันไม่ใช้ ListenAddress เลยและทุกอย่างทำงานได้ดีบนโฮมเซิร์ฟเวอร์ของฉัน เราเตอร์ของฉันส่งต่อสิ่งที่เข้ามาในพอร์ตฉันระบุ (22 ถ้าคุณต้องการพอร์ตมาตรฐาน แต่คุณสามารถใช้อะไรก็ได้ตราบใดที่มันไม่ขัดแย้งกับบริการอื่น ๆ บนเครือข่าย intl.) ไปยังคอมพิวเตอร์ที่ฉันต้องการ ตัวอย่างเช่นสิ่งใดก็ตามที่เข้ามาในพอร์ต 12345 จะถูกส่งต่อไปยังพอร์ต 22 บนเซิร์ฟเวอร์ CentOS ของฉัน สิ่งใดก็ตามที่เข้ามาใน 12346 จะถูกส่งต่อไปยังพอร์ต 22 ของ RasPi ที่ไม่มีหัวของฉัน สิ่งใดก็ตามที่เข้ามาใน 12347 ไปที่พอร์ต 6697 สำหรับนักโกหกของ IRC ใน RasPi ของฉัน

ListenAddress ไม่มีส่วนเกี่ยวข้องกับพอร์ต forwading, ListenAdress สามารถใช้สำหรับเซิร์ฟเวอร์ที่กำหนดค่าด้วยที่อยู่ IP หลายแห่งใน NIC อย่างน้อยหนึ่งแห่ง อ้างจากที่นี่ (ทั้งหน้าเป็นคำอธิบายที่ดี): https://www.cyberciti.biz/tips/howto-openssh-sshd-listen-multiple-ip-address.html

ให้เราบอกว่าคุณมีที่อยู่ IP สาธารณะ 8 แห่งและที่อยู่ IP ส่วนตัวหนึ่งที่ คุณ> ต้องการผูก sshd กับ IP สาธารณะที่เลือกไว้ (เช่น 70.5.xx.xx) และส่วนตัว> IP (10.1.5.1) เท่านั้น

โชคดีที่มีวิธีง่ายๆในการทำสิ่งนี้โดยใช้ตัวเลือก ListenAddress มัน> ระบุที่อยู่ในท้องถิ่นที่ sshd ควรฟัง หากคำสั่งนี้คือ> ข้ามจากไฟล์กำหนดค่า sshd จะผูกหรือรายการในที่อยู่ IP> ที่มีอยู่ทั้งหมด

อนุญาตให้หนึ่งใน IP หลาย ๆ อันของคุณยอมรับการเชื่อมต่อ ssh ฉันเดาว่าคุณตั้ง ListenAddress เป็น IP สาธารณะของคุณหรือ IP ภายในของเราเตอร์ของคุณ - ฉันเดาว่าถ้าคุณตั้งให้ IP ท้องถิ่นของเซิร์ฟเวอร์ของคุณมันจะทำงานได้ดี ไม่ว่าตอนนี้คุณจะรู้ว่า ListenAddress ทำงานอย่างไรและคุณจะพร้อมหากคุณต้องกำหนดค่าเซิร์ฟเวอร์ที่ซับซ้อนมากขึ้น ดีใจที่ได้ยินว่าคุณมีงานทำ


2
+1 นี่คือคำตอบที่ถูกต้อง Ubuntu 16.04 เริ่มใช้ systemd คำสั่งในคำตอบนี้ใช้ systemd เพื่อเริ่ม SSH เมื่อรีบูต เธรดอื่น ๆ ที่เชื่อมโยง OP ใช้กับการพุ่งพรวดเท่านั้นไม่ใช่ systemd หรือไม่ได้ใช้กับปัญหาของพวกเขาเลย
Sam Gleske

1
ฉันทำ systemctl list-unit-files –type = service และฉันเห็นว่า ssh.service เปิดใช้งานอยู่ ดังนั้นฉันไม่คิดว่าเป็นปัญหา แต่ขอบคุณสำหรับเคล็ดลับใน systemctl / systemd นั่นทำให้ฉันมีที่ให้ดูมากขึ้น มีวิธีบอก systemd / systemctl ให้รอจนกระทั่ง DCHP ส่งคืนที่อยู่ IP หรือไม่
Rothrock

หลังจากเปิดใช้งานไฟล์ใหม่ควรถูกสร้างขึ้นตรวจสอบด้วยls -l /etc/systemd/system/sshd.service
Timo

2

ในฐานะที่เป็นวิธีการแก้ปัญหาที่แนะนำไม่ทำงานสำหรับฉันในที่สุดฉันก็พบว่าจำเป็นต้องใช้คำสั่งเพิ่มเติมเพื่อเริ่ม SSH เมื่อบูต:

sudo update-rc.d ssh defaults
sudo systemctl enable ssh.socket

บางคนกล่าวว่าคำสั่งนี้:

sudo systemctl enable ssh.service

ควรดำเนินการแทนคำสั่งนี้:

sudo systemctl enable ssh

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