不使用路由器,如何通过以太网将树莓派连接到笔记本电脑?

106

我正在使用树莓派参与一个气球项目。当我们有可能在农村地区找回树莓派时,我希望能够安全地关闭它。

假设没有路由器或网络附近,我想知道是否有办法将树莓派通过以太网电缆直接连接到笔记本电脑?


你有考虑将其设置为访问点吗?这是我以前所做的。 - Spencer
10个回答

82

这是一个适用于Ubuntu的解决方案(这个想法也适用于Windows或Mac),我今天刚刚尝试过,效果非常好。

材料

  1. 一根交叉网线(名字很花哨,但它只是一条普通的网线)
  2. 笔记本电脑(Ubuntu)
  3. Raspberry Pi(我有Pi2)

在您的Ubuntu上的先决条件

  1. 安装网络管理器

    $sudo apt-get install network-manager

  2. 安装nmap

    $sudo apt-get install nmap

编辑笔记本电脑上的有线连接(Ubuntu)

  1. 将IPv4设置更改为“共享给其他计算机”
  2. 保存设置
  3. 重新启动笔记本电脑

通过以太网交叉线缆共享笔记本电脑的WiFi连接

  1. 使用以太网电缆将RPi与笔记本电脑连接起来

  2. 查找以太网连接(笔记本电脑)的广播地址,

$/sbin/ifconfig eth1 | grep "Bcast" | awk -F: '{print $3}' | awk '{print $1}' 10.42.0.255

  1. 使用此地址查找RPi的IP地址,在我的情况下是10.42.0.96,因为10.42.0.1是我的笔记本电脑

    $nmap -n -sP 10.42.0.255/24

  Starting Nmap 6.40 ( http://nmap.org ) at 2016-02-20 23:07 CET
  Nmap scan report for 10.42.0.1
  Host is up (0.00031s latency).
  Nmap scan report for 10.42.0.96
  Host is up (0.0023s latency).
  Nmap done: 256 IP addresses (2 hosts up) scanned in 2.71 seconds
  • 使用电脑登录您的树莓派(使用-X参数进行X11转发)

    $ssh -X pi@10.42.0.96

  • 现在您的树莓派已连接到电脑上并可共享 WiFi 连接。

    pi@raspberrypi ~ $

  • 共享电脑屏幕和键盘与树莓派

  • 在树莓派上安装vncserver

    $ sudo apt-get update

    $ sudo apt-get install tightvncserver

  • 通过下载 RealVNC 在电脑上安装 vncviewer(支持多种平台) http://www.realvnc.com/download/vnc/

  • 为了能够在 VNC 服务器和 VNC 查看器之间进行拷贝和粘贴,您需要在树莓派上安装 autocutsel。

  • $sudo apt-get install autocutsel

    如果这个网站不能用,试着从其它镜像站点直接下载 .deb 文件,例如: mirror.hmc.edu/debian/pool/main/a/autocutsel/autocutsel_0.10.0-1_armhf.deb,并安装它。

    $sudo dpkg -i autocutsel_0.10.0-1_armhf.deb

  • 在树莓派上启动 vncserver(安装 autocutsel 后需要重新启动 vncserver,您可以输入 $vncserver -kill :1

    $vncserver :1

  • 将 autocutsel -fork 添加到 /home/pi/.vnc/xstartup 中。

  •  #!/bin/sh
     xrdb $HOME/.Xresources xsetroot -solid grey 
     autocutsel -fork
     #x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
     #x-window-manager &
     # Fix to make GNOME work 
     export XKL_XMODMAP_DISABLE=1 
     /etc/X11/Xsession
    
    1. 在您的笔记本电脑上启动vncviewer

      $vncviewer

    2. 一个vncviewer窗口会弹出,输入您的RPi的IP地址(由您的笔记本电脑提供),后跟端口1,这是您的VNC服务器。例如,在我的情况下是10.42.0.96:1。

    3. 通过输入密码(自己设置密码)将其连接到托管在RPi上的vncserver

      12.现在您可以在笔记本电脑上看到RPi的桌面,并且我打开了浏览器以显示共享WiFi连接也在工作。

    在Ubuntu上查看您的Raspberry Pi桌面


    1
    抱歉,我不能在Stackoverflow上发布超过两个链接,但这些是我的参考资料: 通过Ubuntu以太网共享Wifi 通过在Raspberry Pi上安装VNC来共享显示器(适用于Linux) 通过在Raspberry Pi上安装VNC来共享显示器(适用于Windows) - Nicole Finnie
    3
    你确定交叉线是普通线吗?我认为不是。请看:https://en.wikipedia.org/wiki/Ethernet_crossover_cable。像你说的,在Ubuntu 16.04和RPI 2 Raspbian 2016.05上,普通线确实可以工作。在16.04上,无需安装network-manager,只需使用默认的“网络设置”GUI界面。你应该点击“添加”,而不是“编辑”。无需使用nmap,只需使用cat /var/lib/misc/dnsmasq.leases。请参考:http://www.interlockroc.org/2012/12/06/raspberry-pi-macgyver/。 - Ciro Santilli OurBigBook.com
    我猜如果我的Ubuntu在笔记本电脑的虚拟机上运行,这个方法就不起作用了?对我来说,在第12步“查找以太网连接的广播地址”时,该过程失败。 - CGFoX
    @CGFox,我没有尝试过,但我猜想如果虚拟机使用与eth1相同的以太网地址,那么应该是可以的。 - Nicole Finnie
    @NicoleFinnie,“自2016年11月发布版起,Raspbian默认禁用SSH服务器。”这意味着您无法连接到树莓派,会显示“connection refused”。因此,首先我们需要启用它。 - Giorgi Gvimradze
    显示剩余7条评论

    24

    没有路由器+没有屏幕+普通的以太网电缆+树莓派2+ Raspbian Lite 2018-11-13 + Ubuntu 18.10

    首先,为了安全起见,默认情况下树莓派上的SSH服务器是禁用的,因此我们必须启用它。

    如果您已经通过非SSH方法(例如screen + keyboard或UART)在Pi上拥有shell,请运行以下命令:

    sudo systemctl enable ssh
    sudo service sshd start
    

    如此解释:https://raspberrypi.stackexchange.com/questions/58478/ssh-not-working-with-fresh-install 这种情况会持续到重启。

    否则,将SD卡插入主机,在boot/分区中创建一个名为ssh的空文件。

    在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守护程序,则SSH连接将失败,出现以下错误提示:
    ssh: connect to host 10.42.0.160 port 22: Connection refused
    

    等以后再尝试。

    启用SSH服务器后

    接下来,启动Pi,并将一根以太网电缆直接连接到您的笔记本电脑和Pi之间:

    enter image description here

    在Ubuntu 17.04中,为了解决这个问题,如这个答案所述,您首先需要:
    sudo apt-get install dnsmasq-base
    

    在主机上打开网络管理器:
    nm-connection-editor
    

    开始:

    1. +符号(添加新连接)
    2. Ethernet
    3. 创建
    4. IPv4设置
    5. 方法:共享给其他计算机
    6. 为其设置一个好名称
    7. 保存

    enter image description here

    在主机上查找树莓派的IP地址:

    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)"; )
    

    从树莓派内部来看,注意它可以通过主机的其他接口正常访问互联网:

    ping google.com
    

    例如,在我的笔记本电脑上,树莓派占用了以太网,但主机也通过WiFi连接到互联网。

    如果主机网络适配器支持Auto MDI-X,则不需要交叉线缆。这适用于大多数最新硬件,包括我测试过的2012年联想T430等设备,该设备具有"Intel® 82579LM Gigabit Network Connection",并且记录了对Auto MDI-X的支持

    现在,您还可以:

    UART串行USB转换器

    如果您只想在树莓派上获取shell,这是SSH的替代方法: https://en.wikipedia.org/wiki/Serial_port

    这不使用SSH或网络本身,而是使用旧的、更简单、更直接、更可靠、带宽更低、距离更短的串行接口。使用此方法,树莓派将无法访问互联网。

    桌面电脑仍然有串口,您可以直接使用线连接树莓派,但这些串口在大多数笔记本电脑中是隐藏的,因此我们需要购买一个便宜的USB适配器。在这里我使用了“DSD TECH USB到TTL串行转换器”https://www.amazon.co.uk/gp/product/B072K3Z3TL 参见: https://unix.stackexchange.com/questions/307390/what-is-the-difference-between-ttys0-ttyusb0-and-ttyama0-in-linux/367882#367882

    首先将SD卡插入主机,并编辑第一个分区中的config.txt文件以添加:

    enable_uart=1
    

    如下所述:https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=141195

    第一个分区包含引导程序、配置文件和(Linux / 你的)内核,其中之一是config.txt。第二个分区包含实际的Linux根文件系统。

    现在将您的计算机连接到Pi:

    enter image description here

    您只需要连接3根电缆:

    • 地线到地线
    • Pi上的Tx到串口USB的Rx
    • Pi上的Rx到串口USB的Tx

    这也在此处有文档记录:https://www.raspberrypi.org/documentation/usage/gpio/README.md

    注意不要将地线连接到5V,我已经因此烧坏了2个UART到USB芯片和一个RPI UART!

    您不需要将5V连接到5V。我认为您可以像那样给Pi供电,但是我读到过这是一个不好的想法,只需使用通常的USB电源即可。

    最后,将连接器的USB端插入主机计算机,并通过以下方式获取shell:

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

    Exit with Ctrl-A \.
    这是Adafruit的视频,展示了它的使用方法:https://www.youtube.com/watch?v=zUBPeoLW16Q 另请参阅 RPI SE上类似的问题:https://raspberrypi.stackexchange.com/questions/3867/ssh-to-rpi-without-a-network-connection

    1
    这是我尝试了大约十几种不同的策略后唯一有效的方法(我使用的是Fedora 29)。谢谢! - Daniel Schütte
    在我的情况下,/var/lib/misc/dnsmasq.leases 文件是空的... - borizzzzz
    @Kirjain 感谢您的报告。您的设置是否与我的完全相同(主机、客户端、硬件)?如果不是,您有哪些差异? - Ciro Santilli OurBigBook.com
    1
    @CiroSantilli新疆改造中心996ICU六四事件 感谢联系。我有相同的硬件,但我的树莓派正在运行最新的(2019年6月)raspbian buster版本,我的主机是ubuntu 18.04。在给我的主机和树莓派分配静态IP地址后,我已经成功从主机ping通了树莓派。但是当我尝试ssh时,我遇到了你在答案中提到的连接被拒绝的错误。是的,我确实在我的树莓派的boot分区中创建了空的ssh文件。根据发行说明https://downloads.raspberrypi.org/raspbian/release_notes.txt,这仍然应该是有效的方法。 - borizzzzz
    @AlexeyGy 嗯,那不是我在答案中说的第一件事吗? :-) - Ciro Santilli OurBigBook.com

    23

    您不需要使用交叉线缆,可以使用普通网络电缆,因为树莓派 LAN 芯片足够智能,可以自动重新配置以进行直接网络连接。

    祝好!


    8
    我刚刚成功地实现并测试了这个。我的项目也是同样的情况,想要连接到没有路由器或WiFi的树莓派。只需要一根简单的以太网电缆。
    使用ssh putty程序,将地址设置为
    raspberrypi.local
    登录后,您可以访问终端。
    或者,如果设置了VNC服务器,请使用VNC服务器并输入
    raspberrypi.local:1
    在服务器地址中。输入您的VNC服务器密码,现在您已经可以访问GUI并进行所需操作。
    在我的情况下,它是在远程位置运行脚本。在海报的情况下,安全关闭Pi。很简单。

    1
    在 Linux Mint 终端上,"ssh pi@raspberrypi.local" 适用于全新安装的 Rasberrian。 - Elliot Robert
    值得注意的是,这取决于主机名。因此,如果您更改了树莓派的主机名,则可能现在是 elderberryphi.local - lucidbrot

    7

    为你的笔记本电脑和树莓派配置静态IP。在树莓派上进行以下配置。

    pi@rpi>sudo nano /etc/network/interfaces
    

    然后根据需要配置以下内容以连接到您的笔记本电脑。

    iface eth0 inet static
    
    address 192.168.1.81
    
    netmask 255.255.255.0
    
    broadcast 192.168.1.255
    

    4

    在树莓派上配置静态IP:

    sudo nano /etc/network/interfaces
    

    然后添加:

    iface eth0 inet static
         address 169.254.0.2
         netmask 255.255.255.0
         broadcast 169.254.0.255
    

    然后您可以通过ssh访问树莓派。
    ssh pi@169.254.0.2
    

    4
    以下是针对Windows用户使用以太网线和DHCP服务器连接到RPi的说明。不需要交叉线缆,因为RPi可以处理。我有一篇博客文章记录了这个过程并包含图片,点击此处可查看。 下载 下载Windows DHCP服务器(下载链接在这里)。解压zip文件并打开dhcpwiz应用程序,它将配置DHCP服务器。 DHCP服务器配置 第一个屏幕上点击Next。
    在第二个屏幕上,查找“本地连接”行,并验证其IP地址为0.0.0.0且状态为启用。将以太网线从RPi连接到笔记本电脑上,并打开RPi。在此屏幕上不断刷新,直到IP地址更改为169.254.*.*。如果IP地址是其他任何值,则应更改“本地连接”的网络设置(确保它不是静态IP/DNS)。点击此“本地连接”行并点击下一步。
    勾选HTTP(Web服务器)。这样更容易找到RPi的IP地址。点击下一步。
    保持默认设置并一路点击下一步,直到到达“编写INI文件”屏幕。勾选覆盖现有文件并点击编写INI文件按钮。然后点击下一步。
    在最后一个屏幕上,勾选立即运行DHCP服务器并点击完成DHCP服务器和获取Raspberry Pi的IP地址 这将启动实际的DHCP服务器,使用你刚刚在前面的向导中创建的配置。点击继续作为托盘应用程序按钮,DHCP服务器将最小化到系统托盘中。
    从现在开始1秒钟到5分钟内,你将在系统托盘上看到一个带有笔记本电脑和RPi新IP地址的警示。这个警示非常快,你可能会错过它。通常RPi的IP是169.254.0.2,但也可能是*.01或其他值。更容易访问DHCP服务器的Web UI的方法是通过http://localhost/dhcpstatus.xml。这将列出主机名为“raspberrypi”的IP地址。
    现在,您可以通过Putty或远程桌面连接到您的RPi,并配置其无线设置或其他任何想要做的操作。
    故障排除:
    这可能有些棘手。我的连接似乎掉了,而且我无法使用IP地址重新SSH进去。通常情况下,我可以重新启动Pi并再次获得IP地址。有时我不得不重启RPi和DHCP服务器。有时我必须多次这样做。有一次当我15分钟内没有连接时,我将dhcpsrv2.5.1文件夹中的所有文件复制到一个新文件夹中,然后尝试了一次;它立即起作用。

    1
    请给出下投票者请评论,否则您的投票对大多数人来说毫无用处。 - byronyasgur

    2

    3
    你不需要交叉线缆,因为树莓派有支持普通以太网线的软件。 - Matthew Moisen

    2
    是的,您可以直接将树莓派连接到电脑上,而无需路由器。为此,需要确保树莓派和电脑在同一个子网内,并且都配置有静态IP(同时两个设备之间连接着以太网电缆)。
    最理想的配置如下:
    树莓派eth0上的IP地址:192.168.1.10,子网掩码为255.255.255.0
    您的电脑上的IP地址:192.168.1.11,子网掩码为255.255.255.0
    要在树莓派上设置手动IP地址,请按照this guide进行操作。
    在您的电脑上,您可以在网络适配器设置中设置手动IP地址,具体步骤取决于您的操作系统。
    当您配置好两个静态IP地址后,您可以使用设置的IP地址(192.168.1.10)通过SSH连接到树莓派。
    另一种更简单的方法是在GPIO上连接一个按钮来关闭树莓派!在这里看看!

    2
    我的做法是结合了Nicole Finnie和Ciro Santilli的答案,并参考了其他来源。

    树莓派的设置

    我们需要完成两个步骤:在树莓派上启用ssh,以及配置树莓派使用静态ip。

    启用ssh

    在SD卡的引导分区中添加一个名为ssh的文件(不是根分区中的/boot文件夹),这在其他地方有很好的文档说明。

    静态ip

    打开树莓派SD卡上的/etc/dhcpcd.conf文件,并取消注释静态ip的示例(大约在第40行左右开始)。将地址设置为

    # Example static IP configuration:
    interface eth0
    static ip_address=10.42.0.182/24
    static routers=10.42.0.1
    static domain_name_servers=10.42.0.1 8.8.8.8 fd51:42f8:caae:d92e::1
    

    配置您的笔记本电脑

    首先,请确保在您的笔记本电脑上安装了带有GUI的networkmanager。然后,确保dnsmasq没有作为服务运行:
    systemctl status dnsmasq
    如果此命令打印出该服务已停止,则说明您已经做得很好。

    接下来我们需要配置networkmanager。打开/etc/NetworkManager/NetworkManager.conf并在顶部添加以下两行:

    [main]
    DNS=dnsmasq
    

    然后重新启动。这一步可能不是必要的,重启 NetworkManager 服务可能就足够了。现在进入 NetworkManager GUI(通常通过屏幕角落的图标访问),选择 编辑连接...。在弹出的窗口中,点击 + 图标创建一个新连接。选择 Ethernet 作为类型并按下 创建...。转到 IPv4 设置 选项卡,选择方法 共享给其他计算机。给连接取一个好名字并保存。
    连接树莓派并确保您的笔记本电脑正在使用您的新连接作为其以太网连接。如果是这样,您的 pi 现在应该有一个由您的电脑分配的 IP。您可以首先运行 ifconfig 来查找它。这应该会给您几个文本块,每个网络接口一个。您感兴趣的是类似于 enp0s25eth0 的那个。它应该有一行类似于
    inet 10.42.0.1 netmask 255.255.255.0 broadcast 10.42.0.255
    查看广播地址(在本例中为 10.42.0.255)。如果它与我的不同,请关闭 pi 并将 SD 卡放回笔记本电脑以将 static ip_address 更改为前三个数字与您的广播地址相同的内容。还要将 static routers 和第一个 domain_name_servers 更改为您笔记本电脑的 inet 地址。打开 pi 并连接它。再次运行 ifconfig,查看地址是否已更改。

    ssh 进入 pi

    ssh pi@10.42.0.182
    如果出现 connection refused,则 pi 没有运行 ssh 服务器。如果出现 host unreachable,我很抱歉。
    希望这能帮助到某些人!

    这真的非常感谢。这确实帮助我开始了。我一直在跟随各种指令,但是它们都会破坏一些东西。 - Matt

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接