我正在尝试从运行 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:
- 下载 adb、驱动程序、nmap 和 scrcpy
- 通过 USB 线将 Android 设备连接到 PC
- 启用 USB 调试(如有必要,首先启用开发人员选项)
- 打开命令提示符
- 在 Android 屏幕上键入
adb devices
并按弹出窗口,接受 RSA 密钥 - 类型
adb tcpip 5555
。这允许您通过 TCP/IP 连接到 Android。 - 确保 Android 已连接到 WiFi(或者,使用 PC 的 WiFi 卡创建一个接入点,然后通过 Android WiFi 控件连接到它)
- 在命令提示符中,键入
ipconfig
并查找 AP 的 IP 地址 - 现在输入.这将为您提供 Android 的 IP。
nmap (your IP)/24 -p 5555 -open
- 类型
adb connect (Android IP) 5555
- 类型
scrcpy
。现在您可以在 PC 上看到 Android 的屏幕。此外,您还可以使用键盘和鼠标来控制 Android。并不是说这是 100% 必要的,但我喜欢这样视觉化地做事情。 - 打开终端模拟器或打开另一个命令提示符并键入
adb shell
- 在任一方法中(通过 scrcpy 的模拟器或通过 adb 的 shell)类型
ifconfig
- 找到 Android 的 IP 并编写一个脚本,在每个 IP 上尝试 ssh 或 netcat,直到找到它(尽管使用 Android USB 网络共享,它可能是 192.168.37.2 或 .100,但该 IP 块并未设置为在每个设备上进行网络共享这就是为什么你必须找到IP地址)
- 并且你们已连接!
或者,假设 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 没有正确联网,这就是首要问题。
我的建议:
- 在rasbery pi上你没有显示器,所以我认为它是预先配置的并且正在使用 DHCP...这没问题。这意味着当网络电缆插入时,它会寻找 DHCP 服务器来为自己获取 IP 地址。
- 为了解决需要 dhcp 服务器的问题,您可以将东西插入路由器(您的家庭路由器由您的互联网服务提供商提供)它将提供 DHCP...
- 或者如果只是笔记本电脑和 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(如果您知道用户/密码)