SSH e Home Assistant Core

Boa Tarde:

Tenho o HA Core instalado no Raspberry PI 4 e pretendia com o mesmo poder executar operações num Router com o OpenWRT.
Fora do HA Core corria tudo bem mas dentro dava o famoso erro 255 sendo que andei um pouco às voltas e acabei por dar com o gato e nesse sentido venho aqui partilhar com a comunidade os meus passos.

Os primeiros passos será a criação das Chaves Publicas e Privadas, que no meu caso foi feito com o PuttyGen sendo que utilizei a chave privada para o Putty e coloquei a chave publica, copiada do ecrã da aplicação no OpenWrt no Portal Luci na zona do SSH. Para o Raspberry PI, que é o cliente e usa assim a chave privada tive que usar a opção de exportar a chave como OpenSSH pois a por defeito a do PuttyGen não é OpenSSH. As chaves no Raspberry PI são colocada nas pasta /root/.ssh podendo ser colocadas noutro sitio se indicadas no cliente SSH através do comando -i. O cliente SSH só usa a privada. que por defeito se chama id_rsa, pelo menos no meu caso.

De notar que o cliente ssh, no Raspberry Pi, quando executo por linha de comando e como root obriga a que as permissões de segurança do ficheiro id_rsa seja 0600, ou seja, só acessível pelo root

Exemplo: ssh -i /root/.ssh/id_rsa user@ip ‘comando’ (entre plicas o comando)

No entanto, quando invocava o ssh através do HA Core, através do Shell Command verifiquei que me dava o erro 255. E, após andar às voltas e utilizar o debug verifiquei que:

  • Ao contrario da invocação do SSH via linha de comando com root, a chave privada terá que estar na pasta /home/homeassistant/.ssh, ou seja, numa pasta .ssh no homeassistant.
  • Que as permissões tem que ser 0664 (que aqui funciona) pois de outra forma este ssh invocado pelo HA Core não tem permissões para aceder à chave privada se forem as 0600.

Com isto, funciona impecavelmente.

Por fim, e para efeitos de debug no ssh, para saberem o erro real que tem quando invocam o ssh a partir do HA Core, podem utilizar esta linha de comando:
logsave /tmp/debug.txt ssh -v -i /home/homeassistant/.ssh/id_rsa user@ip ‘comando’

O -v do ssh faz debug para o terminal, stdout e o logsave grava tudo o que lá aparece para o ficheiro que desejam, neste caso o /tmp/debug.txt.

Espero que este mini tutorial ajude.

Obrigado

CGR


Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade