Configuração inicial sem monitor ou teclado

10

Uma pergunta semelhante foi feita antes: Como configurar o Raspberry Pi sem um monitor?

No entanto, considerando que a resposta aceita não parece oferecer uma solução apropriada, e considerando que há um nível de ambiguidade no que estava sendo solicitado, estou assumindo que a pergunta original foi mal construída e que minha pergunta não é ' uma duplicata exata.

Estou realizando a primeira configuração inicial de um Pi. Não tenho monitor ou teclado, mas quero usar um laptop conectado para fazer o trabalho. Eu não quero comprar um monitor ou teclado e tê-los sentados apenas nas ocasiões em que eles precisam do Pi. Eu poderia emprestá-los, mas pretendo comprar mais Pi's no futuro e não quero ter que emprestá-los todas as vezes.

Eu configurei um endereço IP estático no Pi editando o cmdline.txtarquivo. (O Pi está executando a versão mais recente do Raspbian.)

ip=10.0.0.20

Dei à ethinterface do meu laptop um endereço IP estático correspondente. (O laptop está executando o Ubuntu.)

ip ad add 10.0.0.10/24 dev eth0

Conectei os dois com um cabo Ethernet e posso executar o ping com êxito no Pi do meu laptop.

O que não posso fazer é sshcom o Pi. Estou recebendo uma resposta recusada pelo Connection :

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

Uma coisa que isso implica é que sshdainda não está sendo executado no Pi.

Os documentos oficiais afirmam que são sshdexecutados por padrão, mas é possível que durante uma inicialização inicial outras coisas (por exemplo, solicitando a espera da entrada do usuário) possam bloquear a inicialização em um determinado nível, o que significa que não chegamos ao ponto em que sshdé iniciado ?

Para onde eu vou daqui? (Não "para as lojas para comprar um monitor" ...)

O que estou tentando é realmente possível?

Editar:

Agora eu tentei os métodos mencionados nas respostas da seguinte postagem, mas sem sucesso: Habilitando o SSH no RPi sem tela - pressionamentos de tecla para raspi-config?

Especificamente, garantir que o script init SSH seja executado no nível de execução 2 ainda não me permitiu conectar.

Richard Horrocks
fonte
Supondo que você esteja executando o ping no Pi e executando um Raspbian recente, ele deverá funcionar. A única alternativa que posso sugerir é efetuar login através do UART nos pinos 8 e 10. Isso requer fios e um dongle serial USB compatível com 3V3.
31816
Definir endereços estáticos apenas complica o problema. Se você não mexeu com isso, deve conseguir se conectar. ssh [email protected]Parece que não sshé importante dizer-nos como você realmente tenta .
Milliways
Eu tentei remover o endereço IP estático da configuração do Pi e tentei ping [email protected]. Mas isso não funciona porque raspberrypi.localé um host desconhecido. Não seria necessário entrar no /etc/hostsmeu laptop para resolvê-lo?
Richard Horrocks
Deixe-me saber quais detalhes adicionais sobre como eu devo fornecer o SSH e terei prazer em fornecê-los - desculpas se algo estiver faltando. Obrigado pelas sugestões até agora :)
Richard Horrocks
11
Você pode executar sudo nmap 10.0.0.20no laptop. Se mostrar que a porta 22 está aberta, o SSH está sendo executado, caso contrário, não está sendo executado. Não vai consertar, mas vai te dizer o que está acontecendo.
garethTheRed

Respostas:

5

Os documentos oficiais declaram que o sshd é executado por padrão

Na última imagem que tenho, 2015/11/21-raspbian-jessie- Lite .img, isso não é verdade. Atualmente, o Debian / Raspbian jessie usa systemd para init, mas há um tipo de mecanismo híbrido compatível com SysV embutido, e reparei no sistema em execução que criei a partir desta imagem (usando uma tela e um teclado para a configuração inicial), onde sshd agora está ativado, há um gatilho em ambos o systemd e os antigos SysV rc.ddiretórios. Presumivelmente, é assim que o mecanismo compatível com versões anteriores funciona (eu habilitei o ssh via systemd). De qualquer forma, há apenas uma sshdinstância com um PPID de 1 em execução.

Para o sistema em funcionamento, há uma entrada /etc/rc[2,3,4,5].dpara S02ssh(o número exato de prioridade, 02, é definido quando o serviço está ativado e pode variar). Há também um /etc/systemd/system/multi-user.target.wants/ssh.service.

Na imagem base, no entanto ...

... Não há entrada /etc/systemde existe um K01sshpara os níveis de execução 2, 3, 4, 5. Isso praticamente garantirá que nenhum sshd esteja em execução.

Minha sugestão é primeiro tentar definir apenas a entrada SysV. No etcdiretório da segunda partição no cartão 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 se os links estão lá e apontam para o lugar certo stat. Eu acredito que isso deve ser suficiente e agora você pode tentar inicializar o sistema. Nesse caso, depois de remover esses links e executá-los systemctl enable ssh, verifique se os links foram recriados (lembre-se, a prioridade pode ser diferente).

Se você ainda receber "Conexão recusada", crie um link a partir [SD_rootfs]/lib/systemd/system/ssh.servicede [SD_rootfs]/etc/systemd/default.target.wants/ssh.servicee tente novamente.

Cachinhos Dourados
fonte
Obrigado pelas instruções muito detalhadas. Eu notei K01sshno rc2.ddiretório e o renomeei, mas não tinha visto os outros nos outros rcdiretórios. Remover aqueles que usam seu script não ajudou, infelizmente. (Verifiquei se eles foram criados, como você sugeriu.) Para o segundo método, não tenho uma ssh.serviceentrada no etc/systemd/system/multi-user.target.wants/diretório e o lib/systemd/system/diretório não está acessível. O sistema não pode nem dizer que é um diretório (e a execução fileme fornece: ERROR: cannot open lib / systemd / system '(erro de entrada / saída) `).
Richard Horrocks
Observe que não estou usando a imagem Lite, mas a imagem completa da mesma data que você.
Richard Horrocks
Dê uma olhada nos diretórios init mencionados acima no cartão. Você deve saber se o ssh está ativado ou não. Se estiver, corrija o IP + ssh em execução! = "Conexão recusada"; portanto, algo deu errado em algum lugar e você terá que encontrar uma tela e um teclado para diagnosticá-lo. Como alternativa (ou também), você pode usar algo como o wireshark para ver quais pacotes estão indo e voltando; isso provaria definitivamente o que está acontecendo na rede.
goldilocks
Ok, deu uma olhada no Wireshark, mas não chegou a lugar nenhum. Então decidiu gravar uma imagem Lite e tente isso. Percebi que os systemdarquivos que você mencionou estavam presentes, então tentei sua segunda sugestão, que funcionou :) Não sei por que as coisas eram diferentes entre as imagens, mas poderia ter sido meu hacking que afetou algo na primeira imagem. (Eu não tenho idéia do que ...) Muito obrigado por sua ajuda.
Richard Horrocks
Por uma questão de completude, tentei novamente com uma imagem Jessie cheia de gordura gravada em um cartão SD diferente, mas, novamente, o lib/systemd/system/diretório estava inacessível. O mesmo vale para uma imagem Wheezy. Somente a imagem Lite me permitiu acessar o diretório e, portanto, concluir as instruções.
Richard Horrocks
11

Para aqueles que se deparam com isso com as imagens Raspbian mais recentes: existe um sshwitchdestino systemd, que verifica /boot/sshe, se esse arquivo estiver presente, ele regenera as chaves do host SSH e habilita o servidor SSH.

Portanto, para ativar o SSH, basta adicionar um arquivo chamado sshna raiz da partição de inicialização (a FAT, com o bootcode.binarquivo) e inicializar o seu Pi!

Edit: isso funcionou na minha imagem 2017-01-11-raspbian-jessie-lite.

Steffan Karger
fonte
Isso funciona bem. Se você tiver um teclado à mão, digite: pi <enter> raspberry <enter> sudo touch / boot / ssh <enter> sudo reboot <enter>, observe o roteador enquanto o dispositivo recebe um ip e, em seguida, ssh pi @ <thatip> e você vai se sentir como um hacker.
Nurettin
1

Desculpe por ser uma resposta, mas não o suficiente para comentar.

O serviço ssh está ativo? Se possível, e é uma das imagens de instalação do raspberry, tente raspi-config apenas para ativar o ssh.

Outra maneira, verifique se o ssh está carregado e ativado

sudo service --status-all|grep ssh

Talvez a porta ssh 22 rejeite a conexão porque o serviço não está pronto

Jesus Cepeda
fonte
11
Nas versões atuais do raspbian você provavelmente desejaria usar systemctl --list-units | grep ssh(ou melhor ainda, o mais informativo systemctl status ssh). Mas você está essencialmente correto: "Conexão recusada" significa que nada está escutando na porta. Se o ssh estiver em execução, o IP está errado.
goldilocks
2
Obrigado pela resposta. O problema com sua sugestão é que não tenho como executar o comando, porque não consigo acessar o Pi para executá-lo. Frango e ovo. :( Eu sei que o endereço IP está correto, porque eu posso fazer ping (e não sei mais nada na rede tem o mesmo endereço).
Richard Horrocks
1

https://www.raspberrypi.org/blog/a-security-update-for-raspbian-pixel/ Este link para o sistema operacional versão Rasbian PIXEL.

George
fonte
Isso realmente não parece responder à pergunta de forma alguma.
Jacobm001
Embora as informações úteis estejam apenas no link (e não na resposta, que é onde deveria estar), essa é pelo menos a documentação oficial do raspberrypi.org e a seção "O que mudou?" na página vinculada detalha os problemas de segurança que causaram as alterações necessárias (por exemplo, desabilitar o ssh por padrão) e detalha a /boot/sshcorreção.
Roberto Tyley
0

A versão do Jessie Lite de 26 de fevereiro de 2016 tem o ssh ativado por padrão.

Romilly Cocking
fonte