没有显示器或键盘的初始设置


10

之前有人问过类似的问题:如何在没有显示器的情况下设置Raspberry Pi?

但是,鉴于所接受的答案似乎无法提供适当的解决方案,并且所询问的内容存在一定程度的歧义,因此我假设原始问题的构造是错误的,而我的问题是“完全相同。

我正在执行Pi的初始设置。我没有显示器或键盘,但想使用连接的笔记本电脑来完成这项工作。我不想购买显示器或键盘,而只是为了Pi需要它们的场合而坐。我可以借用它们,但是我计划将来购买更多的Pi,并且不想每次都借用它们。

我通过编辑cmdline.txt文件在Pi上设置了静态IP地址。(树莓派正在运行最新版本的Raspbian。)

ip=10.0.0.20

我已经为eth笔记本电脑上的接口提供了相应的静态IP地址。(笔记本电脑正在运行Ubuntu。)

ip ad add 10.0.0.10/24 dev eth0

我已经用以太网电缆将两者连接在一起,并且可以从笔记本电脑成功ping Pi。

无法做到的是sshPi。我收到连接被拒绝的响应:

richard@richard-ThinkPad-X220:~$ ssh -vvv pi@10.0.0.20
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 10.0.0.20 [10.0.0.20] port 22.
debug1: connect to address 10.0.0.20 port 22: Connection refused
ssh: connect to host 10.0.0.20 port 22: Connection refused

这可能暗示的一件事是sshdPi尚未运行。

官方的文档状态sshd默认运行,但有可能是一个初始的启动过程中其他的东西(如提示等待用户输入)可能会在一定程度阻止启动,这意味着我们没有达到在该点sshd是开始?

我从这里去哪里?(不是“到商店购买显示器” ...)

我尝试的实际可行吗?

编辑:

我现在已经尝试了以下帖子的答案中提到的方法,但是没有成功:在没有屏幕的RPi上启用SSH-raspi-config的击键操作?

具体来说,确保SSH初始化脚本在运行级别2上运行仍然不允许我进行连接。


假设您正在ping Pi并且它正在运行最新的Raspbian,那么它应该可以工作。我唯一建议的选择是通过UART的8和10号引脚登录。这确实需要电线和3V3兼容的USB串行加密狗。
2016年

设置静态地址只会使问题复杂化。如果您不摆弄它,那么您应该能够与之联系。ssh pi@raspberrypi.local您似乎不认为告诉我们您实际尝试的方式ssh很重要。
Milliways '16

我尝试从Pi的配置中删除静态IP地址,然后尝试了ping pi@raspberrypi.local。但这不起作用,因为raspberrypi.local它是未知主机。它不需要在/etc/hosts笔记本电脑上输入才能解决该问题吗?
理查德·霍罗克斯

让我知道有关如何通过SSH提供的更多详细信息,我将很乐意为您提供-如果缺少任何内容,我们深表歉意。感谢您到目前为止的建议:)
理查德·霍罗克斯

1
您可以sudo nmap 10.0.0.20在笔记本电脑上运行。如果显示端口22打开,则SSH正在运行,否则未运行。它不会解决它,但是会告诉您发生了什么。
garethTheRed

Answers:


5

官方文档指出sshd默认运行

在最新的图像无我有,2015年11月21日- raspbian-jessie- 精简版 .IMG,这是不正确的。Debian / Raspbian jessie当前使用systemd进行初始化,但是内置了一种向后兼容SysV的混合向后兼容机制,我注意到从该映像创建的正在运行的系统(使用屏幕和键盘进行初始设置),现在启用sshd的位置,在systemd和旧SysV 目录中都有一个触发器rc.d。大概这就是向后兼容机制的工作方式(我通过systemd启用了ssh)。无论如何,只有一个sshd实例的PPID为1。

对于工作制,有一个条目/etc/rc[2,3,4,5].dS02ssh(当服务功能,可改变确切的优先数,02,被设置)。还有一个/etc/systemd/system/multi-user.target.wants/ssh.service

但是,在基本图像中...

...没有输入,运行级别2、3、4、5 /etc/systemd都有a K01ssh。这几乎可以保证没有sshd在运行。

我的建议是首先尝试仅设置SysV条目。从etcSD卡第二个分区的目录中:

for i in 2 3 4 5; do \
ln -s ../init.d/ssh rc$i.d/S02ssh; \
rm rc$i.d/K01ssh \
done

检查以确保链接在那里,并使用指向正确的位置stat。我相信这应该足够了,您现在可以尝试启动系统。如果是这样,请在进入后删除那些链接并运行systemctl enable ssh,然后检查链接是否已重新创建(请记住,优先级可能有所不同)。

如果仍然出现“拒绝连接”,请创建从[SD_rootfs]/lib/systemd/system/ssh.service到的链接,[SD_rootfs]/etc/systemd/default.target.wants/ssh.service然后重试。


感谢您的非常详细的说明。我注意到K01sshrc2.d目录中已将其重命名,但没有发现其他rc目录中的其他目录。不幸的是,使用脚本删除那些文件并没有帮助。(按照您的建议,我检查了它们是否已创建。)对于第二种方法,我在目录中没有ssh.service条目etc/systemd/system/multi-user.target.wants/,并且该lib/systemd/system/目录不可访问。系统甚至无法分辨它是一个目录(运行file给了我:ERROR: cannot open lib / systemd / system'(输入/输出错误)`)。
理查德·霍罗克斯

请注意,我使用的不是Lite图像,而是与您同日的全幅图像。
理查德·霍罗克斯

看一下卡上上面提到的init目录。您应该能够判断ssh是否已启用。如果是这样,请正确运行IP + ssh!=“连接被拒绝”,所以某处出了点问题,您将必须找到屏幕和键盘来对其进行诊断。另外(或同样),您可以使用wireshark之​​类的工具查看来回的数据包;这肯定可以证明网络上正在发生的事情。
goldilocks

好的,和Wireshark碰了一下,但是什么也没得到。然后决定刻录Lite映像并尝试。我注意到systemd您提到的文件存在,因此尝试了您的第二条建议,该建议起作用了:)不确定图像之间为什么有所不同,但是可能是我的破解使第一张图像中的内容受到影响。(我不知道是什么...)非常感谢您的帮助。
理查德·霍罗克斯

为了完整起见,我再次尝试将全新的全脂Jessie映像刻录到其他SD卡上,但是lib/systemd/system/仍然无法访问该目录。Wheezy图像也是如此。仅精简版映像允许我访问目录,因此请完成说明。
理查德·霍罗克斯

11

对于那些使用较新的Raspbian映像遇到这种情况的人:有一个sshwitchsystemd目标,该目标检查/boot/ssh,如果该文件存在,它将重新生成SSH主机密钥并启用SSH服务器。

因此,要启用SSH,只需ssh在启动分区的根目录中添加一个名为FAT的bootcode.bin文件(带有该文件的FAT ),然后启动您的Pi!

编辑:这适用于我的2017-01-11-raspbian-jessie-lite图像。


这很好。如果您有键盘,请输入:pi <enter> raspberry <enter> sudo touch / boot / ssh <enter> sudo reboot <enter>,然后在设备获得ip时观察路由器,然后ssh pi @ <thatip>并您会感觉像个黑客。
nurettin

1

抱歉,这是一个答案,但不能只赞美一下。

ssh服务启动了吗?如果可能的话,并且它是树莓派安装映像之一,请尝试使用raspi-config来启用ssh。

另一种方法,请检查ssh是否已加载并启用

sudo service --status-all|grep ssh

也许ssh端口22拒绝连接,因为该服务尚未准备好


1
在当前版本的raspbian上,您可能需要使用systemctl --list-units | grep ssh(或更好但更有用systemctl status ssh)。但是您本质上是正确的,“连接被拒绝”意味着端口上没有监听。如果ssh正在运行,则说明IP错误。
goldilocks

2
感谢您的回答。您的建议的问题是我无法运行命令,因为我无法访问Pi来运行它。鸡肉和鸡蛋。:(我知道IP地址是正确的,因为我可以对其进行ping操作(并且我知道网络上的其他地址都没有相同的地址。)
Richard Horrocks

1

https://www.raspberrypi.org/blog/a-security-update-for-raspbian-pixel/此链接用于Rasbian PIXEL版本的操作系统。


这似乎并没有以任何方式回答这个问题。
Jacobm001

尽管有用的信息仅在链接中(而不是在答案中,应该在链接中),但这至少是raspberrypi.org的官方文档,并且“发生了什么变化?”部分。链接页面中的“详细信息”详细介绍了导致所需更改(即默认情况下禁用ssh)的安全问题,并详细说明了此/boot/ssh修复程序。
罗伯托·泰利

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.