如何在 CentOS7 上通过 SSH 连接到通过以太网连接的 Raspberry Pi?

如何在 CentOS7 上通过 SSH 连接到通过以太网连接的 Raspberry Pi?

我正在尝试从运行 CentOS7 的笔记本电脑通过 SSH 连接到我的 Raspberry Pi 3 Model B V1.2。我已通过以太网电缆将它们连接在一起,但笔记本电脑无法识别 Raspi。因此,我尝试运行 StackExchange 上类似问题中用户提供的以下命令:

$cat /proc/net/arp
IP address       HW type     Flags       HW address            Mask     Device

我还尝试使用 nmap 进行扫描,使用搜索 StackExchange 时找到的命令:

$nmap 192.168.1.1-20
Starting Nmap 7.70 ( https://nmap.org ) at XXXX-XX-XX XX:XX XXX
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
Nmap done: 20 IP addresses (0 hosts up) scanned in 0.04 seconds

限制条件:

  • 我没有带 HDMI 输入端口的外接显示器。
  • 我没有路由器。

编辑:到目前为止我已经尝试了两件事。

  • 我尝试按照用户在其中一个答案中的说明,手动将 IP 地址分配给我的 Raspi 以及我的以太网端口。

    $ssh 192.168.1.10
    ssh: connect to host 192.168.1.10 port 22: Connection refused

  • 我尝试在我的笔记本电脑上安装 dhcp 服务器,正如另一个用户在答案中所说的那样。

    systemctl start dhcpd
    Job for dhcpd.service failed because the control process exited with error code. See "systemctl status dhcpd.service" and "journalctl -xe" for details.

答案1

或者,您也可以将 Pi 连接到手机并通过 USB 将其连接。我将这样做

从 Windows 使用 Android:

  1. 下载 adb、驱动程序、nmap 和 scrcpy
  2. 通过 USB 线将 Android 设备连接到 PC
  3. 启用 USB 调试(如有必要,首先启用开发人员选项)
  4. 打开命令提示符
  5. 在 Android 屏幕上键入adb devices并按弹出窗口,接受 RSA 密钥
  6. 类型adb tcpip 5555。这允许您通过 TCP/IP 连接到 Android。
  7. 确保 Android 已连接到 WiFi(或者,使用 PC 的 WiFi 卡创建一个接入点,然后通过 Android WiFi 控件连接到它)
  8. 在命令提示符中,键入ipconfig并查找 AP 的 IP 地址
  9. 现在输入.这将为您提供 Android 的 IP。nmap (your IP)/24 -p 5555 -open
  10. 类型adb connect (Android IP) 5555
  11. 类型scrcpy。现在您可以在 PC 上看到 Android 的屏幕。此外,您还可以使用键盘和鼠标来控制 Android。并不是说这是 100% 必要的,但我喜欢这样视觉化地做事情。
  12. 打开终端模拟器或打开另一个命令提示符并键入adb shell
  13. 在任一方法中(通过 scrcpy 的模拟器或通过 adb 的 shell)类型ifconfig
  14. 找到 Android 的 IP 并编写一个脚本,在每个 IP 上尝试 ssh 或 netcat,直到找到它(尽管使用 Android USB 网络共享,它可能是 192.168.37.2 或 .100,但该 IP 块并未设置为在每个设备上进行网络共享这就是为什么你必须找到IP地址)
  15. 并且你们已连接!

或者,假设 adb 不是一个选项,您可以尝试在 Android 上安装 ssh 服务器、termux、VNC 服务器或 ssh 服务器,并以这种方式访问​​ Android 的 USB 网络共享子网。

如果您不想这样做,您可以尝试使用 Wireshark 或 tcpdump 来查看 Pi 是否有分配的 IP。您只需转储以太网卡的数据包 ( sudo tcpdump -i eth0),假设 eth0 是您的以太网卡。如果您在数据包中没有看到任何带有 IP 的内容,那么您需要使用 DHCP 为 Pi 分配一个 IP。从本质上讲,这就是我建议使用 adb 方法的原因,因为当您使用 USB 网络共享时,Android 有一个 DHCP 服务器,用于为任何连接的设备分配 IP。您可以尝试的其他方法是为 Pi 获取 USB WiFi 和/或蓝牙卡。您通常还可以在 Goodwill 商店找到一款路由器,价格为 2-10 美元,这会节省您很多时间。

注意:老实说,自从我考虑它以来已经很长一段时间了,我不知道发生了什么变化或何时/是否仍然适用,但在过去,您必须使用“交叉电缆”类型的以太网电缆直接连接两台计算机。交叉电缆的不同之处在于,两条线在交叉电缆中的位置不同,并且可以绕过路由器的需要。这可能是问题所在,但我对此表示怀疑,因为我认为这仅适用于当今的独特情况(但正如我所说,我不知道这些情况概括了什么)。

无论如何,我希望这对某人有帮助(尽管我晚了几年)。

答案2

我认为您可能正在寻找不存在的东西。您的 PI 可能没有 IP 地址。

如今,配置 Raspberry PI 的内部 WIFI 来进行连接和查找实际上可能更容易。如果您想使用直接电缆执行此操作,则需要考虑以下事项:

您的第一个问题可能是电缆。曾经有一个问题是以太网设备在PC到PC之间有线连接时无法检测到,需要特殊的“交叉电缆“来实现这一点。交换机(和路由器)以相反的方式连接,这意味着您不需要与交换机或路由器交叉。现代 PC 通常可以自动检测,但这并不能保证。

其次,如果没有路由器,就不会有动态主机配置协议服务器分配IP地址。我相信 Windows 只会选择一个 IP,但我不相信 Linux 和你的 PI 会。

幸运的是,您可以在笔记本电脑和 PI 上静态分配 IP 地址。在你的 pi 上最简单的方法可能是编辑/etc/network/interfaces

auto eth0
iface eth0 inet static
    address 10.0.0.10
    netmask 255.255.255.0
    network 10.0.0.0
    broadcast 10.0.0.255

我不知道centos,但是...此链接建议... /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=enp3s0
ONBOOT=yes
IPADDR=10.0.0.20
NETMASK=255.255.255.0

请记住检查 CentOS 上的 LAN 设备名称。您应该能够通过在命令行中键入来完成此操作ip address。这将列出许多设备:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 11:21:07:02:2f:10 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 83996sec preferred_lft 83996sec

在上面我的网络设备名称是enp0s3

答案3

我正在尝试从运行 CentOS7 的笔记本电脑通过 SSH 连接到我的 Raspberry Pi 3 Model B V1.2。我已通过以太网电缆将它们连接在一起但笔记本电脑无法识别 Raspi...请建议一种从我的笔记本电脑通过 SSH 连接到 Raspi 的方法

所以 SSH 是一个协议。这是一种发生在以太网连接之上的通信方法……使用 TCP/IP。换句话说,听起来你的 Rasb_Pi 没有正确联网,这就是首要问题。

我的建议:

  1. 在rasbery pi上你没有显示器,所以我认为它是预先配置的并且正在使用 DHCP...这没问题。这意味着当网络电缆插入时,它会寻找 DHCP 服务器来为自己获取 IP 地址。
  2. 为了解决需要 dhcp 服务器的问题,您可以将东西插入路由器(您的家庭路由器由您的互联网服务提供商提供)它将提供 DHCP...
  3. 或者如果只是笔记本电脑和 rasb_pi 直接连接在一起(这完全没问题),那么您需要通过笔记本电脑上 CentOS 中的软件设置 DHCP 服务器,当 rasb_pi 搜索时,它将向 rasb_pi 提供 IP 地址。网络电缆已插入其中。

您还可以尝试在 rasb_pi 连接到笔记本电脑时使用 Centos 中的 Wireshark 等软件扫描网络,推断出 rasb_pi 在无法通过 dhcp 获取 IP 地址时下降到的 169.254.xx IP 地址。

只有当你知道了 pi 的 IP 地址后,你才能通过 SSH 连接到它……就像我试图给你邮寄一些东西一样,除非我首先知道你的地址,否则我无法做到这一点。

答案4

您需要在 CentOS 上配置并运行 dhcp 服务器,以自动向 RaspPI 传送 IP 地址。之后,如果您没有交换机来连接电缆,则需要使用以太网交叉电缆将 CentOS 以太网 rj45 端口连接到 RaspPI 的 RJ45 端口。因此,您的 RaspPI 将有一个 IP 地址,并且您的 CentOS 可以 ping 并连接到 ssh(如果您知道用户/密码)

相关内容