Wstępna konfiguracja bez monitora lub klawiatury

10

Podobne pytanie zadawano wcześniej: Jak skonfigurować Raspberry Pi bez monitora?

Biorąc jednak pod uwagę, że zaakceptowana odpowiedź nie wydaje się odpowiednim rozwiązaniem, a biorąc pod uwagę, że pytanie jest niejasne, zakładam, że pierwotne pytanie było błędnie skonstruowane, a moje pytanie nie brzmi „ dokładny duplikat.

Przeprowadzam początkową konfigurację Pi. Nie mam monitora ani klawiatury, ale zamiast tego chcę użyć podłączonego laptopa do wykonania zadania. Nie chcę kupować monitora ani klawiatury i kazać im siedzieć tylko na okazje, kiedy Pi będzie ich potrzebować. Mógłbym je pożyczyć, ale planuję kupić więcej Pi w przyszłości i nie chcę ich za każdym razem pożyczać.

Ustawiłem statyczny adres IP na Pi, edytując cmdline.txtplik. (Pi używa najnowszej wersji Raspbian).

ip=10.0.0.20

Nadałem ethinterfejsowi na moim laptopie odpowiedni statyczny adres IP. (Laptop działa na Ubuntu.)

ip ad add 10.0.0.10/24 dev eth0

Połączyłem je razem za pomocą kabla Ethernet i mogę pomyślnie pingować Pi z mojego laptopa.

Nie mogę zrobić sshdla Pi. Otrzymuję odpowiedź odmowy połączenia :

richard@richard-ThinkPad-X220:~$ ssh -vvv [email protected]
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

Sugeruje to, że sshdjeszcze nie działa na Pi.

Oficjalne docs stwierdzają, że sshdbiegnie domyślnie, ale jest to możliwe, że w początkowym rozruchu, że inne rzeczy (np monituje czekają na dane wprowadzone przez użytkownika) może zablokować bagażnik na pewnym poziomie, co oznacza, że nie dotrzeć do punktu, w którym sshdjest uruchomiona ?

Gdzie mogę się stąd udać? (Nie „do sklepów, aby kupić monitor” ...)

Czy to, co próbuję, jest faktycznie możliwe?

Edytować:

Próbowałem teraz metod wymienionych w odpowiedziach na następujący post, ale bez powodzenia: Włączanie SSH na RPi bez ekranu - naciśnięcia klawiszy dla raspi-config?

W szczególności upewnienie się, że skrypt inicjujący SSH jest uruchamiany na poziomie 2, wciąż nie pozwala mi się połączyć.

Richard Horrocks
źródło
Zakładając, że pingujesz Pi i działa on w ostatnim Raspbian, to powinno działać. Jedyną alternatywą, jaką mogę zasugerować, jest zalogowanie się za pomocą UART na pinach 8 i 10. To wymaga przewodów i szeregowego klucza USB zgodnego z 3V3.
joan
Ustawienie adresów statycznych tylko komplikuje problem. Jeśli nie majstrowałeś przy tym, powinieneś być w stanie się z nim połączyć. ssh [email protected]Nie wydaje ci się, że mówienie nam, jak naprawdę się starasz, sshjest ważne.
Milliways,
Próbowałem usunąć statyczny adres IP z konfiguracji Pi i próbowałem ping [email protected]. Ale to nie działa, ponieważ raspberrypi.localjest nieznanym hostem. Czy nie trzeba mieć wpisu /etc/hostsna moim laptopie, aby go rozwiązać?
Richard Horrocks
Daj mi znać, jakie dalsze szczegóły na temat tego, jak mam dostarczać SSHing, a chętnie udzielę ich - przepraszam, jeśli czegoś brakuje. Dzięki za sugestie do tej pory :)
Richard Horrocks
1
Możesz uruchomić sudo nmap 10.0.0.20na laptopie. Jeśli pokazuje, że port 22 jest otwarty, oznacza to, że SSH działa, w przeciwnym razie nie działa. Nie naprawi tego, ale powie ci, co się dzieje.
garethTheRed

Odpowiedzi:

5

Oficjalne dokumenty stwierdzają, że sshd działa domyślnie

Na najnowszym obrazku, jaki mam, 21.11.2015-raspbian-jessie- lite .img, to nie jest prawda. Debian / Raspbian jessie obecnie używa systemd do init, ale istnieje wbudowany rodzaj hybrydowego mechanizmu kompatybilnego wstecz z SysV i zauważam, że na uruchomionym systemie stworzyłem z tego obrazu (używając ekranu i klawiatury do wstępnej konfiguracji), gdzie sshd jest teraz włączony, zarówno systemowy, jak i stary rc.dkatalog SysV ma wyzwalacz . Prawdopodobnie w ten sposób działa mechanizm kompatybilny wstecz (włączyłem ssh przez systemd). W każdym razie działa tylko jedna sshdinstancja z PPID 1.

Dla działającego systemu istnieje wpis /etc/rc[2,3,4,5].ddla S02ssh(dokładny numer priorytetu, 02, jest ustawiany, gdy usługa jest włączona i może się różnić). Istnieje również /etc/systemd/system/multi-user.target.wants/ssh.service.

Jednak w obrazie podstawowym ...

... Nie ma żadnego wpisu /etc/systemdi istnieje K01sshpoziom uruchamiania 2, 3, 4, 5. To prawie gwarantuje, że żaden sshd nie jest uruchomiony.

Moją sugestią jest, aby najpierw spróbować ustawić tylko wpis SysV. Z etckatalogu drugiej partycji na karcie SD:

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

Sprawdź, czy linki tam są i wskazują na właściwe miejsce za pomocą stat. Uważam, że powinno to wystarczyć i możesz teraz spróbować uruchomić system. Jeśli tak, po wejściu usuń te linki i uruchom je systemctl enable ssh, a następnie sprawdź, czy linki zostały odtworzone (pamiętaj, że priorytet może być inny).

Jeśli nadal pojawia się komunikat „Odmowa połączenia”, utwórz link od [SD_rootfs]/lib/systemd/system/ssh.servicedo [SD_rootfs]/etc/systemd/default.target.wants/ssh.servicei spróbuj ponownie.

Złotowłosa
źródło
Dzięki za bardzo szczegółowe instrukcje. Zauważyłem K01sshw rc2.dkatalogu i zmieniłem jego nazwę, ale nie zauważyłem innych w innych rckatalogach. Usunięcie osób korzystających ze skryptu nie pomogło, niestety. (Sprawdziłem, że zostały utworzone, jak sugerowałeś). W przypadku drugiej metody nie mam ssh.servicewpisu w etc/systemd/system/multi-user.target.wants/katalogu, a lib/systemd/system/katalog jest niedostępny. System nie może nawet powiedzieć, że jest to katalog (a po uruchomieniu filedaje mi: ERROR: cannot open lib / systemd / system '(błąd wejścia / wyjścia) `).
Richard Horrocks
Pamiętaj, że nie używam obrazu Lite, ale pełnotłusty obraz z tą samą datą co ty.
Richard Horrocks
Spójrz na wyżej wymienione katalogi init na karcie. Powinieneś być w stanie stwierdzić, czy ssh jest włączony, czy nie. Jeśli tak jest, uruchom poprawne IP + ssh! Alternatywnie (lub też) możesz użyć czegoś takiego jak wireshark, aby zobaczyć, które pakiety idą tam i z powrotem; zdecydowanie by to udowodniło, co dzieje się w sieci.
Złotowłosa
Okej, miałam kłopoty z Wireshark, ale nigdzie się nie dostał. Następnie postanowiłem wypalić obraz Lite i spróbować tego. Zauważyłem, że systemdpliki, o których wspomniałeś, były obecne, więc wypróbowałem drugą sugestię, która zadziałała :) Nie jestem pewien, dlaczego rzeczy różnią się między obrazami, ale to może być moje hackowanie, które wpłynęło na coś na pierwszym zdjęciu. (Nie mam pojęcia co ...) Bardzo dziękuję za pomoc.
Richard Horrocks
Dla kompletności spróbowałem jeszcze raz ze świeżym, grubym obrazem Jessie wypalonym na innej karcie SD, ale znowu lib/systemd/system/katalog był niedostępny. To samo dotyczy obrazu Wheezy. Tylko obraz Lite pozwolił mi uzyskać dostęp do katalogu i dlatego wykonać instrukcje.
Richard Horrocks
11

Dla tych z was, którzy natkną się na to z nowszymi obrazami Raspbian: istnieje sshwitchsystemowy cel, który sprawdza /boot/ssh, a jeśli ten plik jest obecny, regeneruje klucze hosta SSH i włącza serwer SSH.

Tak więc, aby włączyć SSH, po prostu dodaj plik wywoływany sshw katalogu głównym partycji rozruchowej (FAT z bootcode.binplikiem) i uruchom swój Pi!

Edycja: działało to na moim obrazie 2017-01-11-raspbian-jessie-lite.

Steffan Karger
źródło
To działa dobrze. Jeśli masz pod ręką klawiaturę, wpisz: pi <enter> raspberry <enter> sudo touch / boot / ssh <enter> sudo reboot <enter>, a następnie obserwuj router, gdy urządzenie otrzymuje adres IP, a następnie ssh pi @ <thatip> i poczujesz się jak haker.
nurettin
1

Przepraszam, że jest to odpowiedź, ale nie można się o tym przekonać.

Czy usługa ssh działa? Jeśli jest to możliwe i jest to jeden z malinowych obrazów instalacyjnych, wypróbuj raspi-config, aby włączyć ssh.

Innym sposobem jest sprawdzenie, czy ssh jest załadowane i włączone

sudo service --status-all|grep ssh

Być może port ssh 22 odrzuca połączenie, ponieważ usługa nie jest gotowa

Jesus Cepeda
źródło
1
W obecnych wersjach raspbian prawdopodobnie zechcesz użyć systemctl --list-units | grep ssh(lub lepiej, tym bardziej informacyjny systemctl status ssh). Ale zasadniczo masz rację, „Odmowa połączenia” oznacza, że ​​nic nie nasłuchuje na porcie. Jeśli ssh jest uruchomiony, adres IP jest nieprawidłowy.
Złotowłosa
2
Dziękuję za odpowiedź. Problem z twoją sugestią polega na tym, że nie mam możliwości uruchomienia polecenia, ponieważ nie mam dostępu do Pi, aby je uruchomić. Kurczak I Jajko :( Wiem, że adres IP jest prawidłowy, ponieważ mogę go pingować (i nie wiem, że nic innego w sieci ma ten sam adres).
Richard Horrocks
1

https://www.raspberrypi.org/blog/a-security-update-for-raspbian-pixel/ Ten link do systemu operacyjnego wersji Rasbian PIXEL.

Jerzy
źródło
To naprawdę nie wydaje się w żaden sposób odpowiadać na pytanie.
Jacobm001
Chociaż przydatne informacje znajdują się tylko w linku (a nie w odpowiedzi, która powinna tam być), jest to przynajmniej oficjalna dokumentacja raspberrypi.org i sekcja „Co się zmieniło?” na połączonej stronie szczegółowo opisano problemy związane z bezpieczeństwem, które spowodowały wymagane zmiany (tj. domyślnie wyłączono ssh), i szczegółowo opisano /boot/sshpoprawkę.
Roberto Tyley
0

Wersja Jessie Lite z 26 lutego 2016 r. Ma domyślnie włączoną funkcję ssh.

Romilly Cocking
źródło