SSH เป็น RPi โดยไม่ต้องเชื่อมต่อเครือข่าย?


36

เป็นไปได้ไหมที่SSHRPi ที่ไม่มีการเชื่อมต่อเครือข่าย?

ฉันจินตนาการได้ว่าคุณสามารถทำได้โดยใช้สาย LAN จากคอมพิวเตอร์ไปยัง RPi หรืออาจใช้สาย USB

จริง ๆ แล้วฉันสามารถเข้าถึงเครือข่ายได้ แต่ก็ไม่อนุญาตให้มีการเชื่อมต่อขาเข้า (แม้กระทั่งจาก IP ของท้องถิ่น) ไปยังพอร์ตใด ๆ ยกเว้น 80 และ 443 ฉันจะจินตนาการ


3
เพียงใช้สายครอสโอเวอร์ฉันเดาว่านั่นเป็นทางออกที่คุณต้องการ;) เชื่อมต่อสายเคเบิลทั้งหมดในสาย UTP เช่นนี้: numitechsolutions.com/wp-content/uploads/2012/01//จากนั้นเชื่อมต่อกับ PI และพีซีของคุณ ให้ IP ของพวกเขาเสร็จแล้ว)
ลอเรนซ์

เกี่ยวกับขั้นตอนการเชื่อมต่อมีบทความที่ดี: การเชื่อมต่อระยะไกล Raspberry Pi - ไม่มีเครือข่าย! . มันอธิบายการกำหนดค่าแล็ปท็อปทั้ง Mac และ Windows
Tomáš Zato

1
ด้วยอะแดปเตอร์อีเธอร์เน็ตที่ทันสมัยไม่จำเป็นต้องใช้ครอสโอเวอร์ ในกล่อง Windows เพียง 'แชร์' การเชื่อมต่อเครือข่ายไร้สายของคุณ (คุณสมบัติอะแดปเตอร์เปิดการแชร์) กับ LAN ของคุณ RPI จะได้รับที่อยู่ IP จากที่นั่น สิ่งนี้จะให้การเข้าถึง SSH จากกล่อง Windows ไปยัง RPi ของคุณ แต่ไม่ใช่การเข้าถึงจากภายนอก
fcm

ในฐานะที่เป็นความคิดเห็น fcm สายครอสโอเวอร์ส่วนใหญ่เป็นเรื่องของอดีตที่ผ่านมาในขณะนี้ ; อินเทอร์เฟซอีเธอร์เน็ตร่วมสมัยรวมถึงที่อยู่บน pi จะข้ามร่างกายตัวเองเมื่อเสียบเข้าด้วยกัน
goldilocks

ฉันเพิ่งติดปัญหานี้ด้วยและตอนนี้ฉันสามารถทำได้ ดังนั้นฉันจึงต้องการแบ่งปันวิธีแก้ปัญหาของฉัน คุณสามารถดูได้จากลิงค์นี้topboxbox.blogspot.com/2017/11/…
TopBoxBox

คำตอบ:


6

ไม่มีเราเตอร์ + ไม่มีหน้าจอ + สายอีเธอร์เน็ตปกติ + RPI 2 + Raspbian Lite 2018-11-13 + Ubuntu 18.10

ก่อนอื่นเราต้องเปิดใช้งานเซิร์ฟเวอร์ SSH บน Pi ซึ่งถูกปิดใช้งานโดยค่าเริ่มต้นเพื่อความปลอดภัย

หากคุณมีเชลล์บน Pi ผ่านวิธีที่ไม่ใช่ SSH เช่นหน้าจอ + แป้นพิมพ์หรือ UART (ดูด้านล่าง) เพียงแค่เรียกใช้:

sudo systemctl enable ssh
sudo service sshd start

ตามที่อธิบายไว้ที่: SSH ไม่ทำงานกับการติดตั้งใหม่ซึ่งยังคงมีอยู่ในบูท

มิฉะนั้นให้ใส่การ์ด SD ลงในโฮสต์ของคุณและสร้างไฟล์วิเศษที่มีชื่อว่าsshไฟล์ในboot/พาร์ติชัน

บนโฮสต์ Ubuntu มันจะถูกเมาต์โดยอัตโนมัติและคุณสามารถทำได้

sudo touch /media/$USER/boot/ssh

ซึ่งคุณสามารถยืนยันด้วย:

lsblk

ซึ่งประกอบด้วย:

mmcblk0     179:0    0  14.4G  0 disk
├─mmcblk0p1 179:1    0  43.9M  0 part /media/ciro/boot
└─mmcblk0p2 179:2    0  14.4G  0 part /media/ciro/rootfs

หากคุณไม่เปิดใช้งาน SSHD daemon บน Pi การเชื่อมต่อ SSH จะล้มเหลวด้วย:

ssh: connect to host 10.42.0.160 port 22: Connection refused

เมื่อเราลองในภายหลัง

หลังจากเปิดใช้งานเซิร์ฟเวอร์ SSH

ถัดไปบู๊ต Pi และเชื่อมต่อสายเคเบิลอีเธอร์เน็ตจากแล็ปท็อปของคุณโดยตรงกับ Pi

ป้อนคำอธิบายรูปภาพที่นี่

บน Ubuntu 17.04 เพื่อแก้ไขข้อผิดพลาดนี้ตามที่ระบุไว้ในคำตอบนี้คุณต้อง:

sudo apt-get install dnsmasq-base

บนโฮสต์ให้เปิดตัวจัดการเครือข่าย:

nm-connection-editor

และไป:

  1. + ลงชื่อ (เพิ่มการเชื่อมต่อใหม่)
  2. อีเธอร์เน็ต
  3. สร้าง
  4. การตั้งค่า IPv4
  5. วิธีการ: แชร์กับคอมพิวเตอร์เครื่องอื่น
  6. ตั้งชื่อที่ดีสำหรับมัน
  7. บันทึก

ป้อนคำอธิบายรูปภาพที่นี่

ค้นหา IP ของ Pi บนโฮสต์:

cat /var/lib/misc/dnsmasq.leases

แสดงผลดังนี้:

1532204957 b8:27:eb:0c:1f:69 10.42.0.160 raspberrypi 01:b8:27:eb:0c:1f:69

10.42.0.160 เป็น IP แล้วตามปกติ:

ssh pi@10.42.0.160

ฉันยังมีต่อไปนี้ในของฉัน.bashrc:

piip() ( cat /var/lib/misc/dnsmasq.leases | cut -d ' ' -f 3; )
pissh() ( sshpass -p raspberry ssh "pi@$(piip)"; )

จากภายใน Pi สังเกตว่ามันสามารถเข้าถึงอินเทอร์เน็ตได้ตามปกติผ่านอินเทอร์เฟซอื่นของโฮสต์ของคุณ:

ping google.com

ตัวอย่างเช่นบนแล็ปท็อปของฉัน Pi รับ Ethernet แต่โฮสต์นั้นเชื่อมต่อกับอินเทอร์เน็ตผ่าน WiFi ด้วย

สายครอสโอเวอร์จะไม่จำเป็นต้องใช้ถ้าการ์ดเครือข่ายโฮสต์สนับสนุนAuto MDI-X เป็นกรณีนี้สำหรับฮาร์ดแวร์ล่าสุดรวมทั้งตัวอย่าง 2012 Lenovo T430 ผมทดสอบด้วยซึ่งมี "การเชื่อมต่อIntel® 82579LM Gigabit Network" ซึ่งเอกสารสนับสนุน Auto MDI-X

ตอนนี้คุณยังสามารถ:

ตัวแปลง USB อนุกรม UART

นี่เป็นอีกทางเลือกหนึ่งสำหรับ SSH หากคุณต้องการรับเชลล์บน Pi: https://en.wikipedia.org/wiki/Serial_port

สิ่งนี้ไม่ได้ใช้ SSH หรือระบบเครือข่าย แต่ค่อนข้างเก่าง่ายกว่าน่าเชื่อถือมากขึ้นแบนด์วิดท์ต่ำกว่าและอินเตอร์เฟสระยะทางอนุกรมที่ต่ำกว่า Pi จะไม่สามารถเข้าถึงอินเทอร์เน็ตได้ด้วยวิธีนี้

คอมพิวเตอร์เดสก์ท็อปยังมีพอร์ตอนุกรมซึ่งคุณสามารถเชื่อมต่อสายโดยตรงกับสายได้ แต่คอมพิวเตอร์เหล่านี้ซ่อนอยู่ในแล็ปท็อปส่วนใหญ่ดังนั้นเราจึงจำเป็นต้องซื้ออะแดปเตอร์ USB ราคาถูก ที่นี่ฉันใช้แล้ว: https://www.amazon.co.uk/gp/product/B072K3Z3TLดูเพิ่มเติมที่: https://unix.stackexchange.com/questions/307390/what-is-the-difference-between- ttyS0-ttyusb0 และ ttyama0 ในลินุกซ์ / 367882 # 367882

ก่อนอื่นเสียบการ์ด SD บนโฮสต์และแก้ไขconfig.txtไฟล์ที่มีอยู่ในพาร์ติชันแรกเพื่อเพิ่ม:

enable_uart=1

ตามที่อธิบายไว้ที่: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=141195

พาร์ติชั่นแรกนี้มี bootloader, ไฟล์การตั้งค่าและเคอร์เนล (Linux / ของคุณ), config.txtเป็นหนึ่งในนั้น พาร์ติชั่นที่สองมีระบบไฟล์รูท Linux จริง

ตอนนี้เชื่อมต่อคอมพิวเตอร์ของคุณกับ Pi เป็น:

ป้อนคำอธิบายรูปภาพที่นี่

คุณจะต้องแนบ 3 สาย:

  • จากพื้นถึงพื้น
  • Tx บน Pi ถึง Rx บน USB เข้ากับพอร์ตอนุกรม
  • Rx บน Pi ถึง Tx บน tye USB เข้ากับพอร์ตอนุกรม

นอกจากนี้ยังมีการบันทึกไว้ที่: https://www.raspberrypi.org/documentation/usage/gpio/README.md

ระวังอย่าเชื่อมโยงกราวด์กับ 5V ฉันได้เผาชิป UART ไปยัง USB 2 ตัวแล้วโดยทำเช่นนั้น!

คุณไม่จำเป็นต้องเชื่อมต่อ 5V กับ 5V เลย ฉันคิดว่าคุณสามารถให้พลังงาน Pi ของคุณแบบนั้นได้ แต่ฉันอ่านแล้วว่านี่เป็นความคิดที่ไม่ดีเพียงใช้แหล่งพลังงาน USB ปกติ

สุดท้ายให้เสียบด้าน USB ของช่องเสียบเข้ากับโฮสต์คอมพิวเตอร์ของคุณและรับเชลล์ด้วย:

sudo apt install screen
sudo usermod -a -G dialout $USER
screen /dev/ttyUSB0 115200

Ctrl-A \ทางออกด้วย

นี่คือวิดีโอโดย Adafruit แสดง: https://www.youtube.com/watch?v=zUBPeoLW16Q

ดูสิ่งนี้ด้วย

คำถามที่คล้ายกันเกี่ยวกับ Stack Overflow: https://stackoverflow.com/questions/16040128/hook-up-raspberry-pi-via-ethernet-to-laptop-without-router


คุณไม่ควรทำซ้ำคำตอบเดียวกันเสมอ แทนที่จะแสดงความคิดเห็นด้วยลิงก์ไปยังคำตอบแรกของคุณหรือให้คำตอบใหม่ด้วยมุมมองที่ต่างออกไปและลิงค์ไปยังคำตอบแรกเป็นข้อมูลอ้างอิง
Ingo

@Ingo ฉันเชื่อว่าคำตอบนี้ดีที่สุดสำหรับทั้งสองคำถาม หากคุณคิดว่าฉันยังไม่ได้ตอบคำถามโปรดแจ้งให้เราทราบด้วย ความคิดเห็นจะหายไปในทะเลของความคิดเห็นจากนั้นคนอื่น ๆ จะทำซ้ำเนื้อหาเดียวกันด้วยถ้อยคำที่แตกต่างกัน
Ciro Santilli 新疆改造中心法轮功六四事件

2

คุณสามารถทำได้โดยเชื่อมต่อ pi กับแล็ปท็อปผ่านสาย LAN โปรดตรวจสอบให้แน่ใจว่า (ในรายการขณะที่คุณกำลังทำมันเป็นครั้งแรก) คุณมีเซิร์ฟเวอร์ dhcp ที่ทำงานบนแล็ปท็อปของคุณและฟังบนอินเตอร์เฟส LAN ที่คุณใช้เพื่อเชื่อมต่อกับ pi คุณต้องกำหนดที่อยู่ให้กับราสเบอร์รี่


คุณไม่ต้องการ dhcp
ลอเรนซ์

1
หากคุณมีการกำหนดค่า IP แบบคงที่คุณไม่จำเป็นต้อง หากคุณไม่ต้องการสิ่งที่จะให้ที่อยู่ IP
codewarrior


1

ปัญหาคือคุณต้องการเชื่อมต่ออุปกรณ์ 2 ชนิดเดียวกัน แต่ก็ยังเป็นไปได้ คุณสามารถใช้สายเคเบิลแบบไขว้สำหรับวิธีนี้ (วิธีที่ 1) หรือคุณสามารถใช้สวิตช์หรือฮับเพื่อทำการเชื่อมต่อแบบไขว้โดยอัตโนมัติ (วิธีที่ 2) หรือเพียงแค่ใช้เราเตอร์แบบง่าย (วิธีที่ 3)

ทำให้การเชื่อมต่อเป็นไปได้

method1:

ใช้สายเคเบิลแบบไขว้และเชื่อมต่อพีซีและ PI ของคุณ:

สาย Ethernet crossover เป็นสายเคเบิล Ethernet ที่ใช้เชื่อมต่ออุปกรณ์คอมพิวเตอร์เข้าด้วยกันโดยตรง ปกติใช้สายตรงหรือสายแพทช์เพื่อเชื่อมต่อจากคอนโทรลเลอร์เครือข่ายโฮสต์โฮสต์ (คอมพิวเตอร์หรืออุปกรณ์ที่คล้ายคลึงกัน) กับสวิตช์เครือข่ายฮับหรือเราเตอร์ สายเคเบิลที่มีการเชื่อมต่อที่ "ข้าม" ถูกใช้เพื่อเชื่อมต่ออุปกรณ์สองชนิดที่เหมือนกัน: สองโฮสต์หรือสวิตช์สองตัวซึ่งกันและกัน เนื่องจากการรวมความสามารถของ Auto-MDIX

คุณต้องเชื่อมต่อสายเคเบิลในสาย UTP ดังนี้: http://www.incentre.net/wp-content/uploads/2015/02/ethcablerj45cr.gif

ที่มา: http://en.wikipedia.org/wiki/Ethernet_crossover_cable

Method2:

คุณยังสามารถใช้สายอีเธอร์เน็ตคู่บิดที่ทันสมัยเพื่อเชื่อมต่อกับ PI ของคุณ แต่คุณต้องมีฮับหรือสวิตช์สำหรับสิ่งนี้:

การเชื่อมต่อสามารถทำได้ด้วยสายเคเบิลตรงผ่านพอร์ต MDI-X หรือที่เรียกว่าการเชื่อมต่อ "Internal crossover" หรือ "embedded crossover" ฮับและสวิตช์พอร์ตที่มี crossovers ภายในดังกล่าวมักจะมีป้ายกำกับเช่น "uplink" หรือ "X" ตัวอย่างเช่น 3Com มักจะติดป้ายพอร์ตของพวกเขา 1X, 2X และอื่น ๆ ในบางกรณีมีการให้ปุ่มเพื่ออนุญาตให้พอร์ตทำหน้าที่เป็นทั้งพอร์ตปกติหรือพอร์ตอัปลิงค์

ที่มา: http://en.wikipedia.org/wiki/Ethernet_over_twisted_pair

ข้อมูลมากกว่านี้:

แนะนำในปี 1998 สิ่งนี้ทำให้ความแตกต่างระหว่างอัปลิงค์และพอร์ตปกติและสวิตช์เลือกด้วยตนเองบนฮับเก่าและสวิตช์ล้าสมัย หากอุปกรณ์ที่เชื่อมต่อหนึ่งหรือทั้งสองเครื่องมีคุณสมบัติการกำหนดค่า MDI / MDI-X อัตโนมัติไม่จำเป็นต้องใช้สายเคเบิลแบบไขว้ แม้ว่า Auto-MDIX ถูกระบุว่าเป็นคุณสมบัติเสริมในมาตรฐาน 1000BASE-T แต่ในทางปฏิบัติมันถูกนำไปใช้อย่างกว้างขวางในอินเตอร์เฟสส่วนใหญ่ นอกจากนี้ในที่สุดตกลงกันโดยอัตโนมัติ MDI / MDI-X คุณสมบัตินี้อาจถูกอ้างถึงโดยข้อกำหนดเฉพาะของผู้จำหน่ายต่างๆรวมถึง: อัปลิงค์อัตโนมัติและการค้า, การรับรู้สายเคเบิลสากลและการตรวจจับอัตโนมัติ

ที่มา: http://en.wikipedia.org/wiki/Ethernet_crossover_cable

วิธีที่ 3

ใช้เราเตอร์และเชื่อมต่อทั้ง PI และพีซีกับเราเตอร์

ทำการเชื่อมต่อ

ให้ทั้ง IP ในช่วงเดียวกันตัวอย่างเช่น:

PC: 192.168.1.10 Subnet: 255.255.255.0
PI: 192.168.1.11 Subnet: 255.255.255.0

คุณสามารถหาวิธีการทำสิ่งนี้ได้ที่นี่: http://www.cyberciti.biz/faq/linux-configure-a-static-ip-address-tutorial/

เปิดใช้งาน SSH

http://steve.dynedge.co.uk/2012/05/29/enabling-ssh-on-debian-raspberry-pi/

เชื่อมต่อกับ PI

ใน Windows ใช้เช่นสีโป๊ว

วิธีอื่น ๆ :

คุณสามารถดูได้ที่นี่: http://www.linux-usb.org/usbnet/


วิธีที่ 2 ทำงานอย่างไร ฉันไม่ต้องการการเชื่อมต่อเครือข่ายที่ใช้งานบนคอมพิวเตอร์ของฉันหรือไม่?
Tyilo

ฉันทำเจ็ตตอนนั้นไม่เสร็จ ให้ฉัน 1 วินาที
ลอเรนซ์

4
ฉันคิดว่าเวลาที่ผู้คนต้องใช้สายเคเบิลครอสโอเวอร์หายไปตลอดกาล :) ตอนนี้การ์ดอีเธอร์เน็ตใหม่ทุกใบสามารถข้ามได้โดยไม่ต้องใช้สายครอสโอเวอร์
codewarrior

คุณไม่มีทางรู้ว่าพีซีแบบไหนที่คุณมีนอกจากนั้นคุณสามารถลองใช้สายเคเบิล UTP ได้ตลอดเวลา
ลอเรนซ์

สายอีเธอร์เน็ตแบบตรงปกติทำงานบน PI 2 อ่านที่ที่อินเตอร์เฟสสามารถรับรู้ได้ เพิ่งทดสอบกับ Ubuntu 16.04, RPI 2 Raspbian 2016.05
Ciro Santilli 新疆改造中心法轮功六四事件
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.