准备不带屏幕的ssh


156

我家里有Raspberry Pi B型,但没有屏幕。我的计划是将其连接到以太网,然后通过ssh进入。但这意味着必须首先准备带有操作系统(Debian Squeeze)的SD卡。我看到两种方式:

  1. 使用操作系统准备SD,以使RPi始终以固定IP地址连接到以太网并启用SSH服务器。

  2. 使用操作系统准备SD,以便RPi连接到网络,启用SSH服务器,然后广播其IP地址,以便我可以将其SSH到其中。

以下哪种方法比较容易?我该怎么办呢?还有其他方法吗?

我有以下工具:Ubuntu 10.4,MacOS 10.5,Windows 7,但只有Ubuntu具有读卡器。不幸的是,我无法访问路由器的DHCP表,它已完全关闭。


5
除了有用之外-RasPi不会在启用SSH的情况下自然启动(至少是Debian)。您需要修改/ boot /中名称为SSH的文件才能启动。我知道这不能回答您的问题,但这可能是下一个绊脚石:)
乔治·皮尔斯

1
我认为这不值得回答,但是您可以尝试使用端口扫描工具。
ian.shaun.thomas 2012年

10
@iampearce:在debian wheezy beta中,默认情况下似乎确实启用了ssh。
乔恩·埃格顿

5
默认情况下,当前的Wheezy已启用SSH。如果您的网络中有DHCP服务器,它将直接使用。
哨兵2012年

1
我猜已经有您需要的所有答案了。我只想添加在网络中搜索Pi的方式。我通常有不止一台,甚至更多的22号端口处于打开状态的计算机。nmap -sP 192.168.0.0/24 | grep Pi -B 2
cee

Answers:


71

要在启动时启用ssh,请boot.rc在SD映像的启动分区上备份并替换为boot_enable_ssh.rc

我不知道您的路由器,但是您可以配置它为Pi的MAC地址保留一个固定的IP地址。


3
基金会提供的Debian Squeeze映像上是否已安装ssh?
直到B

1
@TillB,它已安装在提供的映像中,但必须手动启动。
finnw 2012年

1
好的,哪个是启动分区?我有一个包含文件系统,一个交换分区和一个包含start.elf文件及其他文件的分区。也有boot_enable_ssh.rc,但没有boot.rc。我将其重命名为boot.rc并启动了。我在网络中找到了RPi(至少我假设它是Pi),但是ssh已关闭。
直到B

1
您确定是这样吗?防雷工程通过重命名为boot.rc,如发现raspberrypi.stackexchange.com/questions/606/...
大卫·赛克斯

5
我在新的无头Raspberry Pi上启动了2012-09-18-wheezy-raspbian.img映像,它自动启动sshd并使用DHCP对其进行配置。
nos

52
  1. 从Raspberry Pi的(SD卡)复制boot_enable_ssh.rcboot.rc/bootrootfs

  2. 仍在Raspberry Pi中rootfs,进行编辑/etc/network/interfaces以分配固定的IP地址(因此不需要DHCP服务器)。例如,

    auto lo eth0
    iface lo inet loopback
    iface eth0 inet static
        address 192.168.0.202
        netmask 255.255.255.0
        gateway 192.168.0.200
    
  3. 引导您的Raspberry Pi,使用以太网电缆将其连接到PC连接到的同一网络(或直接将其连接到PC)并通过SSH登录:

    ssh pi@192.168.0.202
    
  4. 在Raspberry Pi中安装轻型VNC服务器:

    sudo apt-get install tightvncserver
    
  5. 然后启动VNC服务器(将要求您设置密码):

    vncserver :1 -name RasPi -depth 16 -geometry 1024x768
    
  6. 在您的PC中安装VNC客户端:

    apt-get install xtightvncviewer
    
  7. 然后从PC通过VNC连接到Raspberry Pi:

    xtightvncviewer 192.168.0.202:1
    

它只是以这种方式在这里工作:)


2
FWIW:OP询问了ssh,而不是X或VNC。
布拉德

我已使用BUILDROOT下的raspberrypi_defconfig配置将操作系统安装在pi上...引导文件夹中没有boot.rc文件!我能做什么 ?
野兽

36

boot_enable_ssh.rc当前的Raspian版本中没有任何东西。引导时,漂亮的图形菜单会为您提供一些选项(包括SSHD是否应在引导时加载),然后将您转储至命令行。

如果...是图形用户,那就太好了。

如果不是的话,您将留在必须以某种方式外部运行的位置update-rc.d。这实际上所做的就是/etc/init.d/.../etc/rc{0..6}.d/...文件系统中的各个位置创建指向脚本的符号链接。困惑?没关系-进行损坏很简单。

  1. 我假设您是通过Linux计算机执行此操作的。至少使用bash或兼容。如果没有Cygwin(或其他),我的建议将无法在Windows中使用。将SD卡安装cd到其中。

  2. 跑:

    for i in 2 3 4 5; do sudo ln -s /etc/init.d/ssh etc/rc$i.d/S02ssh; done
    
  3. 卸载并引导。您应该可以通过SSH访问它。

如果您很难在网络上找到它...

为您提供三种选择:

  • 使用路由器的管理员进行查找。Netgear尤其擅长显示“附加设备”。
  • 插入显示器并运行ifconfig(作弊!)
  • nmap在另一台计算机上使用进行扫描。您应该知道它大致拥有的IP(到/ 24),因此扫描很简单:

    sudo nmap -sV --open 192.168.0.0/24  -p22
    

1
不要为此使用nmap,您可以ping广播地址并检查ARP表。
Tamara Wijsman 2012年

@TomWijsman您是说跑步ping -b 192.168.0还是等效?我不确定这是否可行,因为我刚刚在两台路由器上对此进行了测试,但没有成功。似乎通常被阻止。
奥利(Oli)2012年

1
@Oli:不,是您的内核没有收集所有ARP答复,检查每个进入的数据包以查看其MAC是否已在ARP缓存中被认为是一种浪费,这就是为什么仅在Linux上并不总是这样的原因我知道如何配置它;但这例如在Windows和Mac OS X上都可以正常工作...
Tamara Wijsman 2012年

@Oli:如果您的系统无法做到这一点arping,一个可行的选择是;它可以执行单独的ping和arp命令所要执行的操作,但不会使网络充满ICMP数据包。
Tamara Wijsman 2012年

2
@nornagon:arp -a不能单独执行此操作。
塔玛拉·维斯曼

21

如果使用Arch Linux发行版,则只需将其插入并等待它从DHCP服务器获取分配的地址即可。然后,您可以检查DHCP的状态(例如,通过连接到路由器),并从已连接的客户端列表中检索IP地址。如果失败,则可以使用nmap或类似工具扫描整个子网的开放端口22(默认情况下启用SSH)。


哦,忘了补充:我无法访问路由器(路由器由我公司提供,并且已完全关闭)。您是说在Arch上始终启用ssh吗?Debian呢?
直到B

我认为只有Arch随附了预先启用的SSHd。

5
默认情况下,Debian没有启用SSH。
史蒂夫·罗比拉德

4
到目前为止,我在Pi上安装的每个发行版都默认启用了SSH。并非总是这样,但对我而言一直如此。
DaveJohnston 2012年

14

由于物联网设备很容易使用默认密码被黑客入侵,在2016年发生了大规模的僵尸网络攻击之后,Raspbian再次默认情况下关闭了SSH(来源)。

修复非常容易,您只需要在boot 分区(而不是根文件系统中的目录)中创建一个名为的文件ssh。要检查您是否在正确的分区中,它应该有一个名为的文件start.elf

之后别忘了更改密码!

在我的网络上找到我的Pi sudo arp-scan -l,虽然sudo nmap -sS --open -O 192.168.1.0/24也是有效但较慢的选择。


您提到的创建一个名为“ start.elf”的文件的帖子,而提到的创建一个名为“ SSH”的文件的源URL请参见:'如果要启用SSH,您需要做的就是在其中放入一个名为ssh的文件。 / boot /目录。” 你可以查看帖子吗?
BastianW

糟糕,我在写答案时有些草率,感谢您确定混淆点
raphael

13

使用Debian 7(Wheezy)Beta映像,默认情况下已安装并启用SSH。您只需要通过其IP地址连接到它。

有几种方法可以确定Raspberry Pi所使用的IP地址,而不必ifconfig直接在其上运行,例如:

  • 您的路由器配置页面上可能会显示一个屏幕,指出所连接机器的IP地址
  • 大多数智能手机都有免费的Wi-Fi网络扫描仪,可显示连接到网络的设备。

默认情况下,我的Debian Wheezy图像上未启用它... :(
Matt Matt

@Matt:确定吗?-开启时我下载的标准版本。
乔恩·埃格顿

我认同。我今天早上才再次尝试过(带有最新图像)。也许我错过了一些事情,但我记得现在已经做过几次了。
马特

在2017
拉斐尔

11

简单的方法(如果您只有键盘)

默认情况下,Debian Wheezy(Raspbian)中未启用SSH。曾几何时,我的Raspbian映像上绝对未启用SSH。显然,现在默认情况下已启用SSH。但是,如果不是这样,并且您被卡住了,请继续阅读:

如果您有USB键盘,启用它非常简单,比我在这里看到的大多数答案都简单得多:

  1. 插入键盘并启动RPi。请注意,默认的键盘布局将是标准的QWERTY US布局,因此请注意“ Y”和“ Z”以及“-”和“ /”。
  2. 等待一分钟,然后键入“ pi”,按Enter,然后单击“ raspberry”,然后按Enter。
  3. 通过以下方式启用SSH:

    sudo /etc/init.d/ssh start
    
  4. 以防万一,再次输入密码“ raspberry”,以防万一,因为这是一个sudo命令,然后按Enter键。

现在,您应该可以通过网络上的IP地址远程访问RPi。

正如Denis Mitropolskiy所提到的,配置实用程序使此时配置SSH变得容易:

sudo raspi-config

只需转到“ ssh”选项。幸运的是,这在SSH会话中有效,因此唯一需要“盲目”运行的命令是上面的第一个命令。


1
很棒的答案,但是看起来可能在Pi随附的最新SD卡上启用了ssh。上周订购了我的产品,而ssh刚刚解决了问题!
pufferfish 2012年

他们现在附带SD卡了吗?您在哪里订购的?不过,那是个好消息。我当时正在考虑升级到B模式。
马特

4
只是对此盲目的解决方案的一个评论:我没有“本地”英文键盘(这是斯洛文尼亚语!),因此,如果没有raspi-configdpkg-reconfigure键盘配置,我的USB键盘将发送“ z”而不是“ y”,确实会影响密码登录。类似的问题也可能在其他非英语键盘上持续存在!从任务栏中的“您的语言”->“ EN”切换键盘/语言栏设置时,您可以在Windows中检查默认英文字符。
TomiL

3
@TomiL:好点。在德语键盘上,“ Z”和“ Y”也被交换。
彼得·莫滕森

1
现在效果最好,最新的Raspbian jessie默认情况下已启用ssh,并使用用户名/密码pi /
raspberry

5

无法说说SSH是否可以直接使用,但是最新的配置实用程序版本具有“启用SSH”命令。之后,我可以通过网络连接到我的Raspberry。但是要启用它,无论如何都需要一个监视器。


1
这基本上是最简单的方法。如果您有键盘,甚至不需要监视器来启用它。只需要一个命令即可盲目运行。
马特

5

一个警告:使用Arch Linux,仅当我启动Raspberry Pi 之前连接了以太网时它才对我有用(然后工作正常:默认情况下启用sshd)。如果我先启动,然后再连接以太网电缆,则Raspberry Pi永远不会联系DHCP服务器获取IP地址。


4

没有路由器+没有屏幕+常规以太网电缆+ RPI 2 + Raspbian Lite 2018-11-13 + Ubuntu 18.10主机

首先,我们必须在Pi上启用SSH服务器,为安全起见默认禁用该服务器。

如果您已经通过非SSH方法(例如屏幕+键盘或UART)在Pi上安装了外壳,请运行:

sudo systemctl enable ssh
sudo service sshd start

如下所述:SSH无法与全新安装配合使用这在引导过程中仍然存在。

否则,将SD卡插入主机,然后sshboot/分区中创建一个名为file 的魔术空文件。

在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

如果您未在Pi上启用SSHD守护程序,则SSH连接将失败,并显示以下信息:

ssh: connect to host 10.42.0.160 port 22: Connection refused

当我们稍后尝试时。

启用S​​SH服务器后

接下来,启动Pi,并将以太网电缆从笔记本电脑直接连接到Pi:

在此处输入图片说明

在Ubuntu 17.04上,要解决此答案中提到的错误,您首先需要:

sudo apt-get install dnsmasq-base

在主机上,打开网络管理器:

nm-connection-editor

去:

  1. + 签名(添加新连接)
  2. 乙太网路
  3. 创造
  4. IPv4设置
  5. 方法:共享到其他计算机
  6. 给它起个好名字

在此处输入图片说明

在主机上找到Pi的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)"; )

请注意,在Pi内部,它可以通过主机的其他接口正常访问Internet:

ping google.com

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

是交叉线并非如果主机网卡需要支持自动MDI-X 。大多数最新硬件就是这种情况,例如我测试过的2012年联想T430,它具有 “英特尔®82579LM千兆网络连接”,其中记录了对Auto MDI-X的支持

现在您还可以:

UART串行USB转换器

如果您只想在Pi上安装Shell,可以使用SSH替代:https : //en.wikipedia.org/wiki/Serial_port

它不使用SSH或网络本身,而是使用较旧,更简单,更直接,更可靠,带宽更低,距离更短的串行接口。Pi无法通过这种方法访问Internet。

台式计算机仍然具有一个串行端口,您可以直接将其与Pi进行线对线连接,但是大多数笔记本电脑都隐藏了这些端口,因此我们需要购买便宜的USB适配器。我在这里使用过:https : //www.amazon.co.uk/gp/product/B072K3Z3TL另请参阅:https : //unix.stackexchange.com/questions/307390/what-is-the-difference-between- ttys0-ttyusb0-和-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:

在此处输入图片说明

您只需要连接3条电缆:

  • 地对地
  • Pi上的Tx到USB到串行端口上的Rx
  • Pi上的Rx到USB上的Tx到串行端口

这也记录在:https : //www.raspberrypi.org/documentation/usage/gpio/README.md

注意不要将地面连接到5V,因为这样做我已经烧掉了2个UART到USB芯片!

您根本不需要将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


3

如果您使用Debian,那么可以在短短几分钟内就可以为您的RPi提供屏幕和网络,这很容易。如果没有,您可以从Ubuntu主机测试“ nmap”和“ ssh”命令。

只需检查软件包openssh-server是否已安装,就可以了。您可以使用命令行从命令行进行操作aptitude install openssh-server。登录到计算机后,您还可以检查或重命名RPi。你也可以检查包装avahi-utilsavahi-daemon安装,只要尝试aptitude install avahi-utils

avahi软件包/程序将实现Apples协议mDNS / DNS-SD,它将向使用该协议作为DNS域中的计算机的其他计算机宣布自己local。因此,如果您的计算机被呼叫rpi-machine,请尝试使用连接到计算机rpi-machine.local

您可以检入文件/etc/nsswitch.conf以查看是否在此行:

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

您的Apple和Ubuntu计算机均应实现此目的。您的MS Windows 7机器却无法做到这一点。在Ubuntu计算机上,您可以尝试以下命令:

avahi-browse --all

要么

avahi-browse _ssh._tcp

然后,您应该获取所有计算机及其服务,例如列出的SSH和HTTP。

您也可以尝试nmap在Ubuntu计算机中安装该软件包。然后,您可以使用命令ip route list查看您所使用的IP网络上的命令。例如,在我的机器上,我可以得到类似的信息(这是来自example.com,所以不要使用它):

192.0.43.0/24 dev eth0  proto kernel  scope link  src 192.0.43.1  metric 1

告诉我我在网上192.0.43.0/24,路由器在192.0.43.1。因此,如果您运行该命令,nmap 192.0.43.0/24将尝试查找网络中的所有计算机,并告知哪些端口已打开。查找port 22/tcp,因为它们是ssh服务器。


3

我确实使用以下步骤成功设置了没有屏幕或键盘的Raspberry PI:

  1. 下载debian-pi / raspbian-ua-netinst的最新映像。当前是raspbian-ua-netinst-v1.0.7.img.bz2。下载的文件只有17 MB。

  2. 下载“ Apple Pi Baker App ”并使用此软件将图像传输到SD卡上

    苹果派贝克

  3. 将SD卡插入PI中,大约15分钟后,将安装最新的Raspbian。

  4. 通过使用Fing iPhone App,我发现了PI的IP,在我的案例中就是这样192.168.1.13

    知识产权

  5. 现在,我可以像这样通过SSH连接到该IP:

    # Password = raspbian
    ssh root@192.168.1.13 
    

瞧,我可以通过SSH进行访问,而无需进行繁琐的配置。

仅供参考:raspbian-ua-netinst提供更高级的配置,因此,如果要调整某些初始设置,请查阅自述文件。

SSH访问


2

初始配置后进行连接的最佳方法之一是启动avahi-daemon并在Raspberry Pi上运行。

在主机计算机上的Raspberry Pi和Bonjour上安装avahi-daemon之后,您只需使用raspberrypi.local作为主机名登录。因此,无需配置静态或动态IP地址

要在Raspberry Pi上安装avahi-daemon:

sudo apt-get update
sudo apt-get install libnss-mdns

如果你有iTunes的安装在主机上,然后只需输入raspberrypi.local腻子,否则从安装Bonjour 这里。查看本教程以获取更多信息。


2

您可能想raspbian-ua-netinst尝试一下:单击此处可以找到它。这是Raspberry Pi 1B,1B +和2B模型的最小Raspbian无人值守网络安装程序。无需屏幕或键盘。他们在中有出色的安装手册README.md

本质上,您只需对SD卡进行FAT格式化。将最新的稳定版本解压缩到其中,然后将SD卡插入Raspberry Pi。安装最小的Raspbian安装大约需要20到30分钟,然后您就可以开始了。默认情况下随附SSH。有一些选项可让您在初始安装过程中安装其他软件包和填充物。显然,您也可以稍后添加软件包。


2

对于Raspbian,我发现本教程非常有用。执行其中描述的步骤后,我可以使用用户名pi和密码从Windows 10便携式计算机到我的Raspberry PI SSH raspberry

更具体地说,这是相关部分:

  • 确保关闭Raspberry Pi的电源,然后卸下SD卡。

  • 将SD卡插入读卡器,然后将其插入笔记本电脑。

  • 找到驱动器,您应该在Card上找到几个文件(请注意,文件要小得多,因为它只是Card的启动部分(其余部分被隐藏了))。

  • 复制cmdline.txt并将其重命名为cmdline.normal

  • 编辑cmdline.txt并在末尾添加IP地址(确保您没有添加任何多余的行)。

对于自动获得IP地址的网络设置,请使用169.254.XX(169.254.0.0 – 169.254.255.255)范围内的地址:

ip=169.254.0.2

对于IP地址固定的网络设置,请使用与笔记本电脑/计算机地址匹配的地址,但最后一位数字除外。

ip=192.168.0.2

确保记下该IP地址(每次想直接连接到Raspberry Pi时都需要它)。

  • 制作cmdline.txt的新副本并将其重命名为cmdline.direct

  • 要在配置之间进行交换,只需将cmdline.txt替换为cmdline.normal或cmdline.direct(或使用选项2中的命令直接在Raspberry Pi上执行-更改将在您下次启动时生效)

  • 将卡退还给Raspberry Pi。将网络电缆连接到计算机和Raspberry Pi,并打开电源。

注意以下内容:

  • 您将需要等待计算机完成对网络设置的检测(在运行过程中,您可能会在系统任务栏中看到一个小的网络图标闪烁,或者打开网络设置以查看它何时完成并具有IP地址)–大约需要1/2分钟。当您以这种方式连接到Raspberry Pi时,您的计算机可能会报告连接为“有限或无连接”,这是正常现象,这表明它是计算机之间的直接连接,而不是标准网络。

  • 如果您忘记或决定不插入网络电缆,Raspberry Pi将等待2分钟(或直到您连接电缆),然后再完成启动(因此,如果仅连接了键盘和显示器,则需要等待) !)。

  • 如果您在计算机上使用多个有线网络适配器(即,使用一个额外的USB-LAN加密狗),您可能会发现必须拔出另一根网络电缆并随后重新连接(我的Windows XP计算机在通过直接链接进行连接之前需要使用此电缆) )。


2

由于我还有其他可以连接的Pi,因此我作弊。

我将Micro SD卡从Pi上取下,不允许我连接,然后将其放入其中一台有效Pi上的USB读取器中。

然后,将其安装到测试文件夹(sudo mount /dev/sda2 /mnt/test),然后chroot /mnt/test将其视为新外壳。

然后,我使用启用了SSH systemctl enable ssh。卸下卡后将卡取出,启动Pi,然后打开SSH端口并可以访问。

我可以肯定在其他systemd风格系统上也可以在Debian上工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.