การตั้งค่าเริ่มต้นโดยไม่มีจอภาพหรือแป้นพิมพ์


10

คำถามที่คล้ายกันได้รับการถามก่อน: วิธีการตั้งค่า Raspberry Pi โดยไม่ใช้จอภาพ?

อย่างไรก็ตามเนื่องจากคำตอบที่ยอมรับนั้นไม่ปรากฏว่ามีวิธีแก้ปัญหาที่เหมาะสมและเนื่องจากมีระดับความคลุมเครือในสิ่งที่ถูกถามฉันสมมติว่าคำถามดั้งเดิมนั้นสร้างขึ้นผิดและคำถามของฉันก็คือ ' ซ้ำซ้อน

ฉันกำลังทำการตั้งค่า Pi ครั้งแรกและครั้งแรก ฉันไม่มีจอภาพหรือแป้นพิมพ์ แต่ต้องการใช้แล็ปท็อปที่เชื่อมต่อเพื่อทำงานแทน ฉันไม่ต้องการซื้อจอภาพหรือแป้นพิมพ์และให้พวกเขานั่งเฉยๆสำหรับโอกาสที่ Pi ต้องการ ฉันสามารถยืมพวกเขาได้ แต่ฉันวางแผนที่จะซื้อ Pi เพิ่มเติมในอนาคตและไม่ต้องการยืมพวกเขาทุกครั้ง

ฉันได้ตั้งค่าที่อยู่ IP แบบคงที่ใน Pi โดยแก้ไขcmdline.txtไฟล์ (The Pi กำลังรัน Raspbian เวอร์ชันล่าสุด)

ip=10.0.0.20

ฉันได้รับethอินเทอร์เฟซบนแล็ปท็อปของฉันที่อยู่ IP คงที่สอดคล้องกัน (แล็ปท็อปใช้งาน Ubuntu)

ip ad add 10.0.0.10/24 dev eth0

ฉันเชื่อมต่อทั้งสองเข้าด้วยกันด้วยสายเคเบิลอีเธอร์เน็ตและสามารถปิง Pi จากแล็ปท็อปของฉันได้สำเร็จ

สิ่งที่ฉันไม่สามารถทำได้คือsshPi ฉันได้รับการเชื่อมต่อปฏิเสธคำตอบ:

richard@richard-ThinkPad-X220:~$ ssh -vvv pi@10.0.0.20
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 10.0.0.20 [10.0.0.20] port 22.
debug1: connect to address 10.0.0.20 port 22: Connection refused
ssh: connect to host 10.0.0.20 port 22: Connection refused

สิ่งหนึ่งที่บ่งบอกว่าsshdนี่คือยังไม่ได้ทำงานบน Pi

เอกสารอย่างเป็นทางการของรัฐที่sshdวิ่งโดยเริ่มต้น แต่ก็เป็นไปได้ว่าในระหว่างการบูตเริ่มต้นที่สิ่งอื่น ๆ (เช่นการแจ้งให้รอสำหรับการป้อนข้อมูลของผู้ใช้) อาจป้องกันการบูตได้ในระดับหนึ่งหมายถึงเราไม่ถึงจุดที่sshdจะเริ่มต้น ?

ฉันจะไปจากที่นี่ที่ไหน (ไม่ใช่ "กับร้านค้าเพื่อซื้อจอภาพ" ... )

เป็นสิ่งที่ฉันพยายามจริงเป็นไปได้?

แก้ไข:

ตอนนี้ฉันได้ลองวิธีที่กล่าวถึงในคำตอบของโพสต์ต่อไปนี้ แต่ไม่ประสบความสำเร็จ: การเปิดใช้งาน SSH บน RPi โดยไม่มีหน้าจอ - การกดแป้นพิมพ์สำหรับ raspi-config?

โดยเฉพาะการรับรองว่าสคริปต์เริ่มต้น SSH นั้นทำงานที่ runlevel 2ยังไม่อนุญาตให้ฉันเชื่อมต่อ


สมมติว่าคุณกำลังส่ง Ping ไปยัง Pi และมันกำลังเรียกใช้ Raspbian ที่ผ่านมาและควรจะใช้งานได้ ทางเลือกเดียวที่ฉันสามารถแนะนำคือการเข้าสู่ระบบผ่านทาง UART บนพิน 8 และ 10 ที่ต้องการสายและดองเกิล USB แบบ 3V3 ที่รองรับ
joan

การตั้งค่าสแตติกแอดเดรสจะทำให้ปัญหาซับซ้อนเท่านั้น หากคุณไม่ทำเรื่องนี้คุณควรจะสามารถเชื่อมต่อกับssh pi@raspberrypi.localคุณดูเหมือนจะไม่คิดที่จะบอกเราว่าจริง ๆ แล้วคุณพยายามsshเป็นสิ่งสำคัญ
Milliways

ฉันได้พยายามลบที่อยู่ IP คงที่จากการตั้งค่า Pi ping pi@raspberrypi.localและพยายาม แต่วิธีนี้ใช้ไม่ได้เพราะraspberrypi.localเป็นโฮสต์ที่ไม่รู้จัก มันจะไม่ต้องการรายการใน/etc/hostsแล็ปท็อปของฉันเพื่อให้สามารถแก้ไขได้หรือไม่
Richard Horrocks

แจ้งให้ฉันทราบรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการที่ฉันจัดหา SSHing และฉันยินดีที่จะให้พวกเขา - ขอโทษหากมีอะไรหายไป ขอบคุณสำหรับคำแนะนำเพื่อให้ห่างไกล :)
ริชาร์ดร็อกส์

1
คุณสามารถเรียกใช้sudo nmap 10.0.0.20บนแล็ปท็อป หากแสดงว่าพอร์ต 22 เปิดอยู่แสดงว่า SSH กำลังทำงานมิฉะนั้นจะไม่ทำงาน มันไม่สามารถแก้ไขได้ แต่มันจะบอกคุณว่าเกิดอะไรขึ้น
garethTheRed

คำตอบ:


5

เอกสารทางการระบุว่า sshd ทำงานโดยค่าเริ่มต้น

ในภาพล่าสุดที่ฉันมี 2015-11-21-raspbian-jessie- lite .img สิ่งนี้ไม่เป็นความจริง Debian / Raspbian jessie ปัจจุบันใช้ systemd สำหรับ init แต่มีกลไกการทำงานร่วมกันแบบไฮบริดย้อนหลัง - SysV ที่เข้ากันได้และฉันสังเกตเห็นระบบปฏิบัติการที่ฉันสร้างขึ้นจากภาพนี้ (ใช้หน้าจอและแป้นพิมพ์สำหรับการตั้งค่าเริ่มต้น) โดยที่ sshd ถูกเปิดใช้งานตอนนี้จะมีทริกเกอร์ในทั้ง systemd และrc.dไดเรกทอรีSysV เก่า สันนิษฐานว่านี่เป็นวิธีการทำงานของกลไกที่เข้ากันได้แบบย้อนหลัง (ฉันเปิดใช้งาน ssh ผ่าน systemd) ไม่ว่าในกรณีใดมีเพียงหนึ่งsshdอินสแตนซ์ที่มี PPID 1 การเรียกใช้

สำหรับระบบการทำงานมีรายการใน/etc/rc[2,3,4,5].dสำหรับS02ssh(หมายเลขลำดับความสำคัญที่แน่นอน 02 มีการตั้งค่าบริการเมื่อมีการเปิดใช้งานและอาจเปลี่ยนแปลง) /etc/systemd/system/multi-user.target.wants/ssh.serviceนอกจากนี้ยังมี

อย่างไรก็ตามในภาพฐาน ...

... ไม่มีรายการใน/etc/systemdและมีK01sshสำหรับ runlevels 2, 3, 4, 5 ที่จะรับประกันได้ว่าไม่มี sshd กำลังทำงานอยู่

ข้อเสนอแนะของฉันคือการลองตั้งค่าเฉพาะรายการ SysV ก่อน จากetcไดเรกทอรีของพาร์ติชันที่สองในการ์ด SD:

for i in 2 3 4 5; do \
ln -s ../init.d/ssh rc$i.d/S02ssh; \
rm rc$i.d/K01ssh \
done

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

หากคุณยังคงได้รับ "การเชื่อมต่อถูกปฏิเสธ" ให้สร้างลิงก์จาก[SD_rootfs]/lib/systemd/system/ssh.serviceถึง[SD_rootfs]/etc/systemd/default.target.wants/ssh.serviceและลองอีกครั้ง


ขอบคุณสำหรับคำแนะนำอย่างละเอียด ฉันสังเกตเห็นK01sshในrc2.dไดเรกทอรีและเปลี่ยนชื่อ แต่ไม่พบผู้อื่นในrcไดเรกทอรีอื่น การลบผู้ที่ใช้สคริปต์ของคุณไม่ได้ช่วย (ฉันตรวจสอบพวกเขาถูกสร้างขึ้นตามที่คุณแนะนำ) สำหรับวิธีที่สองฉันไม่มีssh.serviceรายการในetc/systemd/system/multi-user.target.wants/ไดเรกทอรีและlib/systemd/system/ไดเรกทอรีไม่สามารถเข้าถึงได้ ระบบไม่สามารถบอกได้ว่าเป็นไดเรกทอรี (และการรันfileให้ฉัน: ERROR: cannot open lib / systemd / system '(ข้อผิดพลาดอินพุต / เอาต์พุต) `)
Richard Horrocks

โปรดทราบว่าฉันไม่ได้ใช้ภาพ Lite แต่เป็นภาพเต็มอ้วนในวันเดียวกับคุณ
Richard Horrocks

ดูที่ไดเรกทอรีเริ่มต้นที่กล่าวถึงข้างต้นบนการ์ด คุณควรจะสามารถบอกได้ว่าเปิดใช้งาน ssh หรือไม่ ถ้าเป็นเช่นนั้นให้แก้ไข IP + ssh ที่กำลังทำงานอยู่! = "การเชื่อมต่อถูกปฏิเสธ" ดังนั้นมีบางอย่างผิดปกติและคุณจะต้องหาหน้าจอและคีย์บอร์ดเพื่อทำการวินิจฉัย อีกวิธีหนึ่ง (หรือเช่นกัน) คุณสามารถใช้สิ่งต่าง ๆ เช่นwiresharkเพื่อดูว่าแพ็คเก็ตกำลังจะไปมา สิ่งนี้จะพิสูจน์ได้อย่างแน่นอนว่าเกิดอะไรขึ้นบนเครือข่าย
goldilocks

โอเคมีการกระตุ้นรอบกับ Wireshark แต่ไม่ได้รับทุกที่ จากนั้นตัดสินใจที่จะเผาไหม้ภาพ Lite และลองสิ่งนั้น ฉันสังเกตเห็นว่าsystemdไฟล์ที่คุณกล่าวถึงมีอยู่ลองข้อเสนอแนะข้อที่สองของคุณซึ่งใช้งานได้ :) ไม่แน่ใจว่าทำไมสิ่งต่าง ๆ ระหว่างภาพ แต่มันอาจเป็นการแฮ็คข้อมูลของฉันรอบ ๆ (ฉันไม่รู้ว่าอะไร ... ) ขอบคุณมากสำหรับความช่วยเหลือของคุณ
Richard Horrocks

เพื่อความสมบูรณ์ฉันลองอีกครั้งด้วยภาพเจสซีที่เต็มไปด้วยไขมันที่ถูกเผาไปยังการ์ด SD อื่น แต่อีกครั้งlib/systemd/system/ไดเรกทอรีไม่สามารถเข้าถึงได้ เช่นเดียวกันกับภาพเสียงฮืด ๆ เฉพาะภาพ Lite เท่านั้นที่อนุญาตให้ฉันเข้าถึงไดเรกทอรีและทำตามคำแนะนำให้สมบูรณ์
Richard Horrocks

11

สำหรับผู้ที่คุณใช้งานด้วยอิมเมจ Raspbian ที่ใหม่กว่า: มีsshwitchเป้าหมาย systemd ที่จะตรวจสอบ/boot/sshและหากไฟล์นั้นมีอยู่มันจะสร้างโฮสต์คีย์ SSH ขึ้นใหม่และเปิดใช้งานเซิร์ฟเวอร์ SSH

ดังนั้นเพื่อเปิดใช้งาน SSH เพียงเพิ่มไฟล์ที่เรียกว่าsshในรูทของพาร์ติชันสำหรับบู๊ต (ไฟล์ FAT หนึ่งพร้อมbootcode.binไฟล์) และบูต Pi ของคุณ!

แก้ไข: สิ่งนี้ใช้ได้กับรูปภาพ 2017-01-11-raspbian-jessie-lite ของฉัน


มันใช้งานได้ดี หากคุณมีคีย์บอร์ดที่มีประโยชน์ให้พิมพ์: pi <enter> raspberry <enter> sudo touch / boot / ssh <enter> sudo reboot <enter> จากนั้นเฝ้าดูเราเตอร์ของคุณเมื่ออุปกรณ์ได้รับ ip จากนั้น ssh pi @ <thatip> และ คุณจะรู้สึกเหมือนแฮ็กเกอร์
นูเรตติ

1

ขออภัยเกี่ยวกับคำตอบนี้ แต่ไม่ได้ให้เครดิตเพียงแสดงความคิดเห็น

ssh บริการขึ้นหรือไม่ หากเป็นไปได้และเป็นหนึ่งในอิมเมจการติดตั้งราสเบอร์รี่ให้ลองใช้ raspi-config เพียงเพื่อเปิดใช้งาน ssh

อีกวิธีหนึ่งตรวจสอบว่ามีการโหลดและเปิดใช้งาน ssh หรือไม่

sudo service --status-all|grep ssh

บางทีพอร์ต ssh 22 ปฏิเสธการเชื่อมต่อเพราะบริการไม่พร้อม


1
ในเวอร์ชั่นปัจจุบันของ raspbian คุณอาจต้องการใช้systemctl --list-units | grep ssh(หรือดีกว่ายังมีข้อมูลมากกว่าsystemctl status ssh) แต่คุณเป็นหลักถูกต้อง "ปฏิเสธการเชื่อมต่อ" หมายความว่าไม่มีอะไรฟังในพอร์ต หาก ssh ทำงานอยู่ IP นั้นผิด
goldilocks

2
ขอบคุณสำหรับคำตอบ. ปัญหาเกี่ยวกับข้อเสนอแนะของคุณคือฉันไม่สามารถรันคำสั่งได้เพราะฉันไม่สามารถเข้าถึง Pi เพื่อเรียกใช้ได้ ไก่และไข่ :( ฉันรู้ว่าที่อยู่ IP ที่ถูกต้องเพราะผมสามารถ ping มัน (และฉันรู้ว่าไม่มีอะไรอื่นในเครือข่ายที่มีที่อยู่เดียวกัน).
ริชาร์ดร็อกส์

1

https://www.raspberrypi.org/blog/a-security-update-for-raspbian-pixel/ลิงก์นี้สำหรับระบบปฏิบัติการรุ่น Rasbian PIXEL


ดูเหมือนจะไม่ตอบคำถาม แต่อย่างใด
Jacobm001

แม้ว่าข้อมูลที่เป็นประโยชน์จะอยู่ในลิงค์ (แทนที่จะตอบในคำตอบซึ่งควรจะเป็น) แต่นี่เป็นเอกสาร raspberrypi.org อย่างเป็นทางการอย่างน้อยและส่วน "มีการเปลี่ยนแปลงอย่างไร" ในหน้าการเชื่อมโยงรายละเอียดปัญหาด้านความปลอดภัยที่ทำให้เกิดการเปลี่ยนแปลงที่จำเป็น (เช่นการปิดการใช้งาน ssh โดยค่าเริ่มต้น) และรายละเอียดการ/boot/sshแก้ไข
Roberto Tyley

0

รุ่นของ Jessie lite ลงวันที่ 26 กุมภาพันธ์ 2559 มีการเปิดใช้งาน ssh ตามค่าเริ่มต้น

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