Configuración inicial sin monitor o teclado

10

Se ha hecho una pregunta similar antes: ¿Cómo configurar Raspberry Pi sin un monitor?

Sin embargo, dado que la respuesta aceptada no parece ofrecer una solución adecuada, y dado que hay un nivel de ambigüedad en lo que se estaba preguntando, supongo que la pregunta original fue mal construida y que mi pregunta no es t un duplicado exacto.

Estoy realizando la configuración inicial de un Pi por primera vez. No tengo monitor o teclado, pero en cambio quiero usar una computadora portátil conectada para hacer el trabajo. No quiero comprar un monitor o teclado y tenerlos sentados solo para las ocasiones en que el Pi los necesita. Podría pedirlos prestados, pero planeo comprar más Pi en el futuro, y no quiero tener que pedirlos prestados cada vez.

He configurado una dirección IP estática en el Pi editando el cmdline.txtarchivo. (El Pi está ejecutando la última versión de Raspbian).

ip=10.0.0.20

Le di a la ethinterfaz de mi computadora portátil una dirección IP estática correspondiente. (La computadora portátil está ejecutando Ubuntu).

ip ad add 10.0.0.10/24 dev eth0

He conectado los dos juntos con un cable de ethernet y puedo hacer ping con éxito al Pi desde mi computadora portátil.

Lo que no puedo hacer es sshal Pi. Recibo una respuesta de conexión rechazada :

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

Una cosa que esto implicaría es que sshdaún no se está ejecutando en el Pi.

Los documentos oficiales indican que se sshdejecuta de forma predeterminada, pero es posible que durante un arranque inicial otras cosas (por ejemplo, avisos en espera de entrada del usuario) puedan bloquear el arranque en un cierto nivel, lo que significa que no llegamos al punto en el que sshdse inicia ?

¿A donde voy desde aqui? (No "a las tiendas a comprar un monitor" ...)

¿Es lo que estoy intentando realmente posible?

Editar:

Ahora he probado los métodos mencionados en las respuestas a la siguiente publicación, pero sin éxito: Habilitar SSH en RPi sin pantalla: pulsaciones de teclas para raspi-config?

Específicamente, garantizar que el script de inicio SSH se ejecute en el nivel de ejecución 2 todavía no me permitió conectarme.

Richard Horrocks
fuente
Suponiendo que está haciendo ping al Pi y está ejecutando un Raspbian reciente, entonces debería funcionar. La única alternativa que puedo sugerir es iniciar sesión a través de UART en los pines 8 y 10. Eso requiere cables y un dispositivo de seguridad USB compatible con 3V3.
joan
Establecer direcciones estáticas solo complica el problema. Si no jugaste con él, deberías poder conectarte. ssh [email protected]Parece que no crees que decirnos cómo lo intentas sshes importante.
Milliways
Intenté eliminar la dirección IP estática de la configuración de Pi e intenté ping [email protected]. Pero esto no funciona porque raspberrypi.locales un host desconocido. ¿No necesitaría una entrada en /etc/hostsmi computadora portátil para poder resolverlo?
Richard Horrocks
Hágame saber qué detalles adicionales sobre cómo debo proporcionar SSH, y con gusto los proporcionaré, disculpas si falta algo. Gracias por las sugerencias hasta ahora :)
Richard Horrocks
1
Puedes correr sudo nmap 10.0.0.20en la computadora portátil. Si muestra que el puerto 22 está abierto, entonces SSH se está ejecutando, de lo contrario no se está ejecutando. No lo arreglará, pero le dirá lo que está sucediendo.
garethTheRed

Respuestas:

5

Los documentos oficiales indican que sshd se ejecuta por defecto

En la última imagen que tengo, 2015-11-21-raspbian-jessie- lite .img, esto no es cierto. Debian / Raspbian jessie actualmente usa systemd para init, pero hay una especie de mecanismo híbrido compatible con SysV incorporado, y noto en el sistema en ejecución que creé a partir de esta imagen (usando una pantalla y un teclado para la configuración inicial), donde sshd ahora está habilitado, hay un activador tanto en el rc.ddirectorio systemd como en los directorios SysV antiguos . Presumiblemente, así es como funciona el mecanismo compatible con versiones anteriores (habilité ssh a través de systemd). En cualquier caso, solo hay una sshdinstancia con un PPID de 1 en ejecución.

Para el sistema de trabajo, hay una entrada /etc/rc[2,3,4,5].dpara S02ssh(el número de prioridad exacto, 02, se establece cuando el servicio está habilitado y puede variar). También hay un /etc/systemd/system/multi-user.target.wants/ssh.service.

En la imagen base, sin embargo ...

... No hay entrada /etc/systemdy hay un K01sshnivel de ejecución 2, 3, 4, 5. Eso garantizará que no se esté ejecutando sshd.

Mi sugerencia es intentar primero configurar solo la entrada SysV. Desde el etcdirectorio de la segunda partición en la tarjeta SD:

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

Verifique para asegurarse de que los enlaces estén allí y apunten al lugar correcto con stat. Creo que esto debería ser suficiente y ahora puede intentar arrancar el sistema. Si es así, después de ingresar, elimine esos enlaces y ejecute systemctl enable ssh, luego verifique que los enlaces se hayan recreado (recuerde, la prioridad puede ser diferente).

Si, a pesar "Conexión rechazada", crear un enlace desde [SD_rootfs]/lib/systemd/system/ssh.servicea [SD_rootfs]/etc/systemd/default.target.wants/ssh.servicey vuelve a intentarlo.

Ricitos de oro
fuente
Gracias por las instrucciones muy detalladas. Me di cuenta K01sshen el rc2.ddirectorio y le cambié el nombre, pero no había visto a los demás en los otros rcdirectorios. Lamentablemente, eliminar aquellos que usan su script no ayudó. (Verifiqué que se crearon, como usted sugirió). Para el segundo método, no tengo una ssh.serviceentrada en el etc/systemd/system/multi-user.target.wants/directorio y lib/systemd/system/no se puede acceder al directorio. El sistema ni siquiera puede decir que es un directorio (y la ejecución fileme da: ERROR: cannot open lib / systemd / system '(Error de entrada / salida) `).
Richard Horrocks
Tenga en cuenta que no estoy usando la imagen Lite, sino la imagen completa de la misma fecha que usted.
Richard Horrocks
Eche un vistazo a los directorios init mencionados anteriormente en la tarjeta. Debería poder saber si ssh está habilitado o no. Si es así, ¡corrija IP + ssh en ejecución! = "Conexión rechazada", por lo que algo ha salido mal en alguna parte y tendrá que encontrar una pantalla y un teclado para diagnosticarlo. Alternativamente (o también), puede usar algo como cables de conexión para ver qué paquetes van y vienen; Esto demostraría definitivamente lo que está sucediendo en la red.
Ricitos de oro
Está bien, tuve una molestia con Wireshark pero no llegué a ninguna parte. Luego decidió grabar una imagen Lite y probar eso. Noté que los systemdarchivos que mencionaste estaban presentes, así que intenté tu segunda sugerencia, que funcionó :) No estoy seguro de por qué las cosas eran diferentes entre las imágenes, pero podría haber sido mi pirateo que afectó algo en la primera imagen. (No tengo idea de qué ...) Muchas gracias por su ayuda.
Richard Horrocks
En aras de la exhaustividad, intenté nuevamente con una nueva imagen de Jessie llena de grasa quemada en una tarjeta SD diferente, pero nuevamente, el lib/systemd/system/directorio era inaccesible. Lo mismo ocurre con una imagen de Wheezy. Solo la imagen Lite me permitió acceder al directorio y, por lo tanto, completar las instrucciones.
Richard Horrocks el
11

Para aquellos de ustedes que se encuentran con esto con las imágenes más recientes de Raspbian: hay un sshwitchobjetivo systemd, que verifica /boot/sshy, si ese archivo está presente, regenera las claves de host SSH y habilita el servidor SSH.

Entonces, para habilitar SSH, simplemente agregue un archivo llamado sshen la raíz de la partición de arranque (el FAT, con el bootcode.binarchivo), ¡y arranque su Pi!

Editar: esto funcionó en mi imagen 2017-01-11-raspbian-jessie-lite.

Steffan Karger
fuente
Esto funciona bien Si tiene un teclado a mano, escriba: pi <enter> raspberry <enter> sudo touch / boot / ssh <enter> sudo reboot <enter>, luego observe su enrutador mientras el dispositivo obtiene una ip, luego ssh pi @ <thatip> y Te sentirás como un hacker.
nurettin
1

Lamento que esto sea una respuesta, pero no suficiente crédito para comentar.

¿El servicio ssh está activo? Si es posible, y es una de las imágenes de instalación de frambuesa, intente raspi-config solo para habilitar ssh.

Otra forma, verifique si ssh está cargado y habilitado

sudo service --status-all|grep ssh

Quizás el puerto ssh 22 rechaza la conexión porque el servicio no está listo

Jesus Cepeda
fuente
1
En las versiones actuales de raspbian probablemente querrás usar systemctl --list-units | grep ssh(o mejor aún, el más informativo systemctl status ssh). Pero tiene razón, "Conexión rechazada" significa que nada está escuchando en el puerto. Si ssh se está ejecutando, entonces la IP es incorrecta.
Ricitos de oro
2
Gracias por la respuesta. El problema con su sugerencia es que no tengo forma de ejecutar el comando, porque no puedo acceder al Pi para ejecutarlo. Pollo y huevo. :( Sé que la dirección IP es correcta porque puedo hacer ping (y sé que nada más en la red tiene la misma dirección).
Richard Horrocks
1

https://www.raspberrypi.org/blog/a-security-update-for-raspbian-pixel/ Este enlace para el sistema operativo de la versión Rasbian PIXEL.

Jorge
fuente
Esto realmente no parece responder la pregunta de ninguna manera.
Jacobm001
Aunque la información útil está solo en el enlace (en lugar de en la respuesta de respuesta, que es donde debería estar), esta es al menos la documentación oficial de raspberrypi.org y la sección "¿Qué ha cambiado?" en la página vinculada detalla los problemas de seguridad que causaron los cambios necesarios (es decir, deshabilita ssh de forma predeterminada) y detalla la /boot/sshsolución.
Roberto Tyley
0

La versión de Jessie lite con fecha 26 de febrero de 2016 tiene ssh habilitado de forma predeterminada.

Romilly Cocking
fuente