Installazione iniziale senza monitor o tastiera


10

Una domanda simile è stata posta prima: come configurare Raspberry Pi senza un monitor?

Tuttavia, dato che la risposta accettata non sembra offrire una soluzione adeguata e dato che esiste un livello di ambiguità in ciò che è stato posto, presumo che la domanda originale sia stata costruita male e che la mia domanda non sia " un duplicato esatto.

Sto eseguendo la prima installazione iniziale di un Pi. Non ho un monitor o una tastiera, ma invece voglio usare un laptop collegato per fare il lavoro. Non voglio comprare un monitor o una tastiera e tenerli seduti solo per le occasioni in cui sono necessari al Pi. Potrei prenderli in prestito, ma ho intenzione di acquistare più Pi in futuro, e non voglio prenderli in prestito ogni volta.

Ho impostato un indirizzo IP statico sul Pi modificando il cmdline.txtfile. (Il Pi esegue l'ultima versione di Raspbian.)

ip=10.0.0.20

Ho fornito ethall'interfaccia sul mio laptop un corrispondente indirizzo IP statico. (Il laptop esegue Ubuntu.)

ip ad add 10.0.0.10/24 dev eth0

Ho collegato i due insieme con un cavo Ethernet e posso eseguire correttamente il ping del Pi dal mio laptop.

Quello che non posso fare è sshil Pi. Ricevo una risposta rifiutata dalla connessione :

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

Una cosa che ciò implicherebbe è che sshdnon è ancora in esecuzione sul Pi.

I documenti ufficiali indicano che sshdviene eseguito per impostazione predefinita, ma è possibile che durante un avvio iniziale altre cose (ad es. Prompt in attesa di input dell'utente) possano bloccare l'avvio a un determinato livello, il che significa che non raggiungiamo il punto in cui sshdviene avviato ?

Dove vado da qui? (Non "ai negozi per comprare un monitor" ...)

Quello che sto provando è effettivamente possibile?

Modificare:

Ora ho provato i metodi menzionati nelle risposte al seguente post, ma senza successo: Abilitare SSH su RPi senza schermo - sequenze di tasti per raspi-config?

In particolare, assicurarmi che lo script di iniziatore SSH sia eseguito al runlevel 2 non mi ha permesso di connettermi.


Supponendo che tu stia eseguendo il ping del Pi e che stia eseguendo un Raspbian recente, dovrebbe funzionare. L'unica alternativa che posso suggerire è quella di accedere tramite UART sui pin 8 e 10. Ciò richiede cavi e un dongle seriale USB compatibile 3V3.
Giovanna

L'impostazione di indirizzi statici complica solo il problema. Se non ssh pi@raspberrypi.localci hai provato, dovresti essere in grado di connetterti . Non sembra pensare di dirci come ci provi davvero sshè importante.
Milliways,

Ho provato a rimuovere l'indirizzo IP statico dalla configurazione del Pi e ho provato ping pi@raspberrypi.local. Ma questo non funziona perché raspberrypi.localè un host sconosciuto. Non sarebbe necessario un accesso /etc/hostssul mio laptop per poterlo risolvere?
Richard Horrocks,

Fammi sapere quali ulteriori dettagli su come fornirò SSHing e li fornirò volentieri - mi scuso se manca qualcosa. Grazie per i suggerimenti finora :)
Richard Horrocks,

1
Puoi correre sudo nmap 10.0.0.20sul portatile. Se mostra che la porta 22 è aperta, SSH è in esecuzione, altrimenti non è in esecuzione. Non lo risolverà, ma ti dirà cosa sta succedendo.
garethTheRed,

Risposte:


5

I documenti ufficiali affermano che sshd viene eseguito di default

Nell'ultima immagine che ho, 21-11-2015-raspbian-jessie- lite .img, questo non è vero. Debian / Raspbian jessie attualmente usa systemd per init, ma c'è una sorta di meccanismo ibrido compatibile con SysV all'indietro integrato e noto sul sistema in esecuzione che ho creato da questa immagine (usando uno schermo e una tastiera per la configurazione iniziale), dove sshd è ora abilitato, c'è un trigger sia nella rc.ddirectory systemd che nella vecchia directory SysV . Presumibilmente è così che funziona il meccanismo compatibile con le versioni precedenti (ho abilitato ssh tramite systemd). In ogni caso, c'è solo sshdun'istanza con un PPID di 1 in esecuzione.

Per il sistema funzionante, è presente una voce /etc/rc[2,3,4,5].dper S02ssh(il numero esatto di priorità, 02, viene impostato quando il servizio è abilitato e può variare). C'è anche un /etc/systemd/system/multi-user.target.wants/ssh.service.

Nell'immagine di base, tuttavia ...

... Non c'è entrata /etc/systemde c'è un K01sshrunlevel 2, 3, 4, 5. Questo garantirà praticamente che non sia in esecuzione SSHD.

Il mio consiglio è di provare prima a impostare solo la voce SysV. Dalla etcdirectory della seconda partizione sulla scheda SD:

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

Verificare che i collegamenti siano presenti e che puntino al posto giusto con stat. Credo che questo dovrebbe essere sufficiente e ora puoi provare ad avviare il sistema. In tal caso, dopo aver effettuato l'accesso rimuovi quei collegamenti ed esegui systemctl enable ssh, quindi controlla che i collegamenti siano stati ricreati (ricorda, la priorità potrebbe essere diversa).

Se ricevi ancora "Connessione rifiutata", crea un collegamento da [SD_rootfs]/lib/systemd/system/ssh.servicea [SD_rootfs]/etc/systemd/default.target.wants/ssh.servicee riprova.


Grazie per le istruzioni molto dettagliate. Avevo notato K01sshnella rc2.ddirectory e l' avevo rinominata, ma non avevo notato gli altri nelle altre rcdirectory. Sfortunatamente, rimuovere quelli che usano il tuo script non ha aiutato. (Ho verificato che sono stati creati, come hai suggerito.) Per il secondo metodo, non ho una ssh.servicevoce nella etc/systemd/system/multi-user.target.wants/directory e la lib/systemd/system/directory non è accessibile. Il sistema non può nemmeno dire che è una directory (e in esecuzione filemi dà: ERROR: cannot open lib / systemd / system '(errore di input / output) `).
Richard Horrocks,

Nota che non sto usando l'immagine Lite, ma l'immagine a tutto schermo della stessa data.
Richard Horrocks,

Dai un'occhiata alle directory init sopra menzionate sulla scheda. Dovresti essere in grado di dire se ssh è abilitato o meno. Se lo è, IP + ssh corretto in esecuzione! = "Connessione rifiutata", quindi qualcosa è andato storto da qualche parte e dovrai trovare uno schermo e una tastiera per diagnosticare. In alternativa (o anche), è possibile utilizzare qualcosa di simile a WireShark per vedere quali pacchetti vanno avanti e indietro; questo proverebbe sicuramente ciò che sta accadendo sulla rete.
riccioli d'oro

Okay, ho dato un'occhiata in giro con Wireshark ma non sono arrivato da nessuna parte. Quindi ha deciso di masterizzare un'immagine Lite e provarla. Ho notato che i systemdfile che hai citato erano presenti, quindi ho provato il tuo secondo suggerimento, che ha funzionato :) Non so perché le cose fossero diverse tra le immagini, ma potrebbe essere stato il mio hacking a influenzare qualcosa nella prima immagine. (Non ho idea di cosa ...) Grazie mille per il tuo aiuto.
Richard Horrocks,

Per completezza, ho provato di nuovo con una nuova immagine di Jessie piena di grassi masterizzata su una diversa scheda SD, ma di nuovo la lib/systemd/system/directory era inaccessibile. Lo stesso vale per un'immagine Wheezy. Solo l'immagine Lite mi ha permesso di accedere alla directory e quindi completare le istruzioni.
Richard Horrocks,

11

Per quelli di voi che si imbattono in questo con le immagini Raspbian più recenti: esiste una sshwitchdestinazione systemd, che controlla /boot/sshe, se quel file è presente, rigenera le chiavi dell'host SSH e abilita il server SSH.

Quindi, per abilitare SSH, basta aggiungere un file chiamato sshnella radice della partizione di avvio (quella FAT, con il bootcode.binfile) e avviare il tuo Pi!

Modifica: questo ha funzionato sulla mia immagine 2017-01-11-raspbian-jessie-lite.


Funziona bene Se hai una tastiera a portata di mano, digita: pi <enter> raspberry <enter> sudo touch / boot / ssh <enter> sudo reboot <enter> quindi guarda il tuo router mentre il dispositivo ottiene un ip, quindi ssh pi @ <thatip> e ti sentirai un hacker.
Nurettin,

1

Mi dispiace che questa sia una risposta, ma non è un credito solo per commentare.

Il servizio ssh è attivo? Se è possibile, ed è una delle immagini di installazione di Raspberry, prova raspi-config solo per abilitare ssh.

In un altro modo, verificare se ssh è caricato e abilitato

sudo service --status-all|grep ssh

Forse la porta ssh 22 rifiuta la connessione perché il servizio non è pronto


1
Sulle versioni attuali di raspbian probabilmente vorresti usare systemctl --list-units | grep ssh(o meglio ancora, più informativo systemctl status ssh). Ma in sostanza hai ragione, "Connessione rifiutata" significa che nulla è in ascolto sulla porta. Se ssh è in esecuzione, l'IP è errato.
riccioli d'oro

2
Grazie per la risposta. Il problema con il tuo suggerimento è che non ho modo di eseguire il comando, perché non riesco ad accedere al Pi per eseguirlo. Pollo e uova. :( So che l'indirizzo IP è corretto perché posso eseguire il ping (e non so nient'altro sulla rete ha lo stesso indirizzo).
Richard Horrocks

1

https://www.raspberrypi.org/blog/a-security-update-for-raspbian-pixel/ Questo collegamento per il sistema operativo della versione PIXEL di Rasbian.


Questo non sembra rispondere alla domanda in alcun modo.
Jacobm001

Sebbene le informazioni utili siano solo nel collegamento (piuttosto che nella risposta alla risposta, che è dove dovrebbe essere), questa è almeno la documentazione ufficiale di raspberrypi.org e la sezione "Che cosa è cambiato?" nella pagina collegata vengono descritti in dettaglio i problemi di sicurezza che hanno causato le modifiche richieste (ovvero disabilitando ssh per impostazione predefinita) e dettaglia la /boot/sshcorrezione.
Roberto Tyley,

0

La versione di Jessie Lite del 26 febbraio 2016 ha abilitato ssh per impostazione predefinita.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.