Aby wykonać komendę poprzez ssh na zdalnym hoście korzystając z HA musisz zalogować się do HA po ssh:
i wykonać poniższe punkty:
- wygenerować klucze, w tym celu wydajesz polecenie:
ssh-keygen -t rsa
co spowoduje wygenerowanie pary kluczy (prywatny: id_rsa, publiczny: id_rsa.pub) w katalogu /root/.ssh/ (-> /data/.ssh) - skopiować klucz publiczny na zdalny host - dodać klucz publiczny do authorized_keys, możesz skorzystać z bardzo pomocnego polecenia:
ssh-copy-id uzytkownik@zdalny_host
zalogowanie bedzie jeszcze wymagało podania hasła. - zweryfikować czy wszystko zostało poprawnie skonfigurowane:
ssh uzytkownik@zdalny_host
zalogowałes się do zdalnego hosta bez podawania hasła, działa , możesz wylogować się ze zdalnego_hosta poleceniemexit
- umieścić klucze w dostępnym dla HA katalogu, w tym celu tworzysz katalog np. /config/.ssh:
mkdir /config/.ssh
i tam kopiujesz klucze:
cp /data/.ssh/id_rsa* /config/.ssh/
- po raz kolejny zweryfikować czy konfiguracja jest poprawna:
ssh -i /config/.ssh/id_rsa uzytkownik@zdalny_host polecenie_do_wykonania
zalogowałes się po raz kolejny do zdalnego hosta bez podawania hasła i wykonałes komendę poprzez ssh na zdalnym hoście, działa .
Dopiero po poprawnym wykonaniu powyższych punktów możesz to samo zrobić korzystając z HA, w tym celu musisz:
-
dodać do konfiguracji HA polecenie jakie chcesz wykonać na zdalnym przy pomocy
shell_command
:# Example configuration.yaml entry # Exposes service shell_command.host_komenda shell_command: host_komenda: ssh -i /config/.ssh/id_rsa -o StrictHostKeyChecking=no uzytkownik@zdalny_host polecenie_do_wykonania
-
po restarcie HA będziesz miał dostępną nową usługę :
którą możesz wykorzystać w automatyzacjach.
Wykonywane komendy po ssh możesz także wykorzystać w konfiguracji switch
, szczegóły w dokumentacji https://www.home-assistant.io/integrations/switch.command_line/
Dokładne wytlumaczenie co się dzieje w pkt 1 i 2 znajdziesz na stronie https://kb.iu.edu/d/aews.
Jeżeli coś jest nie jasne, proszę o komentarze, instrukcja zostanie uzupełniona i poprawiona.