Ersteinrichtung ohne Monitor oder Tastatur


10

Eine ähnliche Frage wurde bereits gestellt: Wie richte ich Raspberry Pi ohne Monitor ein?

Angesichts der Tatsache, dass die akzeptierte Antwort keine angemessene Lösung zu bieten scheint und die Fragestellung ein gewisses Maß an Unklarheit aufweist, gehe ich davon aus, dass die ursprüngliche Frage falsch konstruiert wurde und meine Frage nicht lautet. t ein genaues Duplikat.

Ich führe die erstmalige Einrichtung eines Pi durch. Ich habe keinen Monitor oder keine Tastatur, sondern möchte stattdessen einen angeschlossenen Laptop verwenden, um die Arbeit zu erledigen. Ich möchte keinen Monitor oder keine Tastatur kaufen und sie nur herum sitzen lassen, wenn sie vom Pi benötigt werden. Ich könnte sie ausleihen, aber ich plane, in Zukunft weitere Pis zu kaufen, und möchte sie nicht jedes Mal ausleihen müssen.

Ich habe eine statische IP-Adresse auf dem Pi durch Bearbeiten der cmdline.txtDatei festgelegt. (Auf dem Pi wird die neueste Version von Raspbian ausgeführt.)

ip=10.0.0.20

Ich habe der ethSchnittstelle meines Laptops eine entsprechende statische IP-Adresse zugewiesen. (Auf dem Laptop läuft Ubuntu.)

ip ad add 10.0.0.10/24 dev eth0

Ich habe die beiden mit einem Ethernet-Kabel verbunden und kann den Pi erfolgreich von meinem Laptop aus anpingen.

Was ich nicht tun kann , ist sshmit dem Pi. Ich erhalte eine Antwort , bei der die Verbindung abgelehnt wurde :

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

Eine Sache, die dies implizieren würde, ist, dass sshdes noch nicht auf dem Pi läuft.

Die offiziellen Dokumente geben an, dass sie sshdstandardmäßig ausgeführt werden. Es ist jedoch möglich, dass während eines ersten Startvorgangs andere Dinge (z. B. Eingabeaufforderungen, die auf Benutzereingaben warten) den Start auf einer bestimmten Ebene blockieren, was bedeutet, dass wir den Punkt, an dem sshdgestartet wird, nicht erreichen ?

Wohin gehe ich von hier aus? (Nicht "in die Läden, um einen Monitor zu kaufen" ...)

Ist das, was ich versuche, tatsächlich möglich?

Bearbeiten:

Ich habe jetzt die in den Antworten auf den folgenden Beitrag genannten Methoden ausprobiert, aber ohne Erfolg: SSH auf RPi ohne Bildschirm aktivieren - Tastenanschläge für raspi-config?

Insbesondere die Sicherstellung, dass das SSH-Init-Skript auf Runlevel 2 ausgeführt wird, erlaubte mir immer noch keine Verbindung.


Angenommen, Sie pingen den Pi an und es wird ein aktueller Raspbian ausgeführt, dann sollte es funktionieren. Die einzige Alternative, die ich vorschlagen kann, ist die Anmeldung über den UART an den Pins 8 und 10. Dazu sind Kabel und ein 3V3-kompatibler serieller USB-Dongle erforderlich.
Joan

Das Festlegen statischer Adressen erschwert das Problem nur. Wenn Sie nicht damit herumgespielt haben, sollten Sie in der Lage sein, sich mit ssh pi@raspberrypi.localIhnen zu verbinden. Sie scheinen nicht zu denken, dass sshes wichtig ist , uns zu sagen, wie Sie es tatsächlich versuchen .
Milliways

Ich habe versucht, die statische IP-Adresse aus der Pi-Konfiguration zu entfernen, und versucht ping pi@raspberrypi.local. Dies funktioniert jedoch nicht, da raspberrypi.locales sich um einen unbekannten Host handelt. Wäre es nicht erforderlich, einen Eintrag /etc/hostsauf meinem Laptop vorzunehmen, um das Problem beheben zu können?
Richard Horrocks

Lassen Sie mich wissen, welche weiteren Details ich über SSHing liefern soll, und ich werde sie gerne bereitstellen - entschuldigen Sie, wenn etwas fehlt. Vielen Dank für die Vorschläge bisher :)
Richard Horrocks

1
Sie können sudo nmap 10.0.0.20auf dem Laptop laufen . Wenn angezeigt wird, dass Port 22 geöffnet ist, wird SSH ausgeführt, andernfalls wird SSH nicht ausgeführt. Es wird es nicht reparieren, aber es wird Ihnen sagen, was passiert.
GarethTheRed

Antworten:


5

In den offiziellen Dokumenten heißt es, dass sshd standardmäßig ausgeführt wird

Auf dem neuesten Bild, das ich habe, 2015-11-21-raspbian-jessie- lite .img, ist dies nicht wahr. Debian / Raspbian Jessie verwendet derzeit systemd für init, aber es ist eine Art hybrider rückwärts-SysV-kompatibler Mechanismus eingebaut, und ich bemerke auf dem laufenden System, das ich aus diesem Image erstellt habe (mit einem Bildschirm und einer Tastatur für die Ersteinrichtung). Wenn sshd jetzt aktiviert ist, gibt es einen Trigger sowohl im systemd- als auch im alten SysV- rc.dVerzeichnis. Vermutlich funktioniert der abwärtskompatible Mechanismus so (ich habe ssh über systemd aktiviert). In jedem Fall wird nur eine sshdInstanz mit einer PPID von 1 ausgeführt.

Für das funktionierende System gibt es einen Eintrag in /etc/rc[2,3,4,5].dfür S02ssh(die genaue Prioritätsnummer 02 wird festgelegt, wenn der Dienst aktiviert ist und variieren kann). Es gibt auch eine /etc/systemd/system/multi-user.target.wants/ssh.service.

Im Basisbild jedoch ...

... Es gibt keinen Eintrag in /etc/systemdund es gibt einen K01sshfür Runlevel 2, 3, 4, 5. Das garantiert so ziemlich, dass kein sshd läuft.

Mein Vorschlag ist, zuerst nur den SysV-Eintrag festzulegen. Aus dem etcVerzeichnis der zweiten Partition auf der SD-Karte:

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

Stellen Sie sicher, dass die Links vorhanden sind und auf die richtige Stelle mit verweisen stat. Ich glaube, das sollte ausreichen und Sie können jetzt versuchen, das System zu booten. Wenn ja, nachdem Sie diese Links entfernt und ausgeführt haben systemctl enable ssh, überprüfen Sie, ob die Links neu erstellt wurden (denken Sie daran, dass die Priorität möglicherweise unterschiedlich ist).

Wenn immer noch "Verbindung abgelehnt" angezeigt wird, erstellen Sie einen Link von [SD_rootfs]/lib/systemd/system/ssh.servicebis [SD_rootfs]/etc/systemd/default.target.wants/ssh.serviceund versuchen Sie es erneut.


Vielen Dank für die sehr detaillierte Anleitung. Ich hatte es K01sshim rc2.dVerzeichnis bemerkt und umbenannt, aber die anderen in den anderen rcVerzeichnissen nicht entdeckt . Das Entfernen derjenigen, die Ihr Skript verwenden, hat leider nicht geholfen. (Ich habe überprüft, ob sie erstellt wurden, wie Sie vorgeschlagen haben.) Bei der zweiten Methode habe ich keinen ssh.serviceEintrag im etc/systemd/system/multi-user.target.wants/Verzeichnis und auf das lib/systemd/system/Verzeichnis kann nicht zugegriffen werden. Das System kann nicht einmal sagen, dass es sich um ein Verzeichnis handelt (und das Ausführen filegibt mir: ERROR: cannot open lib / systemd / system '(Eingabe- / Ausgabefehler) `).
Richard Horrocks

Beachten Sie, dass ich nicht das Lite-Bild verwende, sondern das Vollfettbild mit demselben Datum wie Sie.
Richard Horrocks

Schauen Sie sich die oben auf der Karte genannten Init-Verzeichnisse an. Sie sollten feststellen können, ob ssh aktiviert ist oder nicht. Wenn dies der Fall ist, wird IP + ssh korrekt ausgeführt! = "Verbindung abgelehnt", sodass irgendwo ein Fehler aufgetreten ist und Sie einen Bildschirm und eine Tastatur finden müssen, um dies zu diagnostizieren. Alternativ (oder auch) können Sie so etwas wie Wireshark verwenden, um zu sehen, welche Pakete hin und her gehen. Dies würde definitiv beweisen, was im Netzwerk passiert.
Goldlöckchen

Okay, ich habe mich mit Wireshark umgesehen, bin aber nicht weitergekommen. Dann beschlossen, ein Lite-Bild zu brennen und das zu versuchen. Ich bemerkte, dass die von systemdIhnen erwähnten Dateien vorhanden waren, also versuchte ich Ihren zweiten Vorschlag, der funktionierte :) Unsicher, warum die Dinge zwischen den Bildern anders waren, aber es könnte mein Hacken gewesen sein, das etwas im ersten Bild beeinflusst hat. (Ich habe keine Ahnung was ...) Vielen Dank für Ihre Hilfe.
Richard Horrocks

Der Vollständigkeit halber habe ich es erneut mit einem frischen, vollfetten Jessie-Image versucht, das auf eine andere SD-Karte gebrannt wurde, aber auch hier war das lib/systemd/system/Verzeichnis nicht zugänglich. Gleiches gilt für ein Wheezy-Bild. Nur das Lite-Image erlaubte mir, auf das Verzeichnis zuzugreifen und daher die Anweisungen zu vervollständigen.
Richard Horrocks

11

Für diejenigen unter Ihnen, die mit den neueren Raspbian-Images darauf stoßen: Es gibt ein sshwitchsystemd-Ziel, das prüft /boot/ssh, und wenn diese Datei vorhanden ist, werden die SSH-Hostschlüssel neu generiert und der SSH-Server aktiviert.

Um SSH zu aktivieren, fügen Sie einfach eine Datei hinzu, die sshim Stammverzeichnis der Startpartition aufgerufen wird (die FAT- bootcode.binDatei mit der Datei), und starten Sie Ihren Pi!

Bearbeiten: Dies funktionierte auf meinem 2017-01-11-raspbian-jessie-lite Bild.


Das funktioniert gut. Wenn Sie eine Tastatur zur Hand haben, geben Sie Folgendes ein: pi <enter> raspberry <enter> sudo touch / boot / ssh <enter> sudo reboot <enter> und beobachten Sie Ihren Router, wie das Gerät eine IP erhält, dann ssh pi @ <thatip> und Sie werden sich wie ein Hacker fühlen.
Nurettin

1

Es tut mir leid, dass dies eine Antwort ist, aber es reicht nicht aus, nur einen Kommentar abzugeben.

Ist der SSH-Dienst aktiv? Wenn es möglich ist und es sich um eines der Himbeer-Installationsimages handelt, versuchen Sie es mit raspi-config, nur um ssh zu aktivieren.

Überprüfen Sie auf andere Weise, ob ssh geladen und aktiviert ist

sudo service --status-all|grep ssh

Möglicherweise lehnt der SSH-Port 22 die Verbindung ab, weil der Dienst nicht bereit ist


1
Bei aktuellen Versionen von Raspbian möchten Sie wahrscheinlich systemctl --list-units | grep ssh(oder besser noch informativer systemctl status ssh) verwenden. Aber Sie haben im Wesentlichen Recht. "Verbindung abgelehnt" bedeutet, dass der Port nicht überwacht wird. Wenn ssh ausgeführt wird, ist die IP falsch.
Goldlöckchen

2
Danke für die Antwort. Das Problem mit Ihrem Vorschlag ist, dass ich den Befehl nicht ausführen kann, da ich nicht auf den Pi zugreifen kann, um ihn auszuführen. Huhn und Ei. :( Ich weiß, dass die IP-Adresse korrekt ist, weil ich sie anpingen kann (und ich weiß, dass nichts anderes im Netzwerk dieselbe Adresse hat).
Richard Horrocks

1

https://www.raspberrypi.org/blog/a-security-update-for-raspbian-pixel/ Dieser Link für das Betriebssystem der Rasbian PIXEL-Version.


Dies scheint die Frage in keiner Weise zu beantworten.
Jacobm001

Obwohl sich die nützlichen Informationen nur im Link befinden (und nicht in der Antwort, in der sie sich befinden sollten), handelt es sich zumindest um die offizielle Dokumentation von raspberrypi.org und den Abschnitt "Was hat sich geändert?". Auf der verlinkten Seite werden die Sicherheitsprobleme aufgeführt, die die erforderlichen Änderungen verursacht haben (dh standardmäßig ssh deaktivieren), und das Update wird detailliert beschrieben /boot/ssh.
Roberto Tyley

0

In der Version von Jessie lite vom 26. Februar 2016 ist ssh standardmäßig aktiviert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.