Command Line avec ssh
Je vais partager comment je fais pour lancer des commandes ssh sur des Raspberry-Pi ou autre machines distantes sur le réseau (j’ai une armée de RPi chez moi )
Je me suis inspirer sur des info. trouvées aussi sur ce forum. Mais je voulais faire une procédure complète ici.
N’hésite pas à me dire si il est possible de faire plus simple ou à corriger les boullettes.
Mon installation est un Home Assistant Supervised avec l’Add-On terminal.
Sur Add-On terminal,
- Génèrer des clés ssh pou HA (à ne faire qu’une seule fois):
mkdir -p /config/ssh_keys
ssh-keygen -t rsa -f /config/ssh_keys/id_rsa -q -P ""
- Transférer la clé public de HA vers l’hôte distant (à faire pour chaque hôte distant):
ssh-copy-id -i /config/ssh_keys/id_rsa.pub pi@192.168.100.5
=> Valider par 'yes'
=> Entrer le mot de passe user 'pi' du Raspberry-Pi distant
- Tester si une commande ssh passe sur l’ôte distant:
ssh -i /config/ssh_keys/id_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no pi@192.168.100.5 'date'
=> Doit retrourner la date sans demander de mot de passe
Exemple de * Command line Switch* à ajouter dans switch.yaml:
- platform: command_line
switches:
lumiere_salon:
command_on: ssh -i /config/ssh_keys/id_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no pi@192.168.100.5 /home/dan/bin/setchacon.sh salon on
command_off: ssh -i /config/ssh_keys/id_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no pi@192.168.100.5 /home/dan/bin/setchacon.sh salon off
Pour tester, j’ai mis le mode debug pour les command_line
logger:
default: info
logs:
homeassistant.components.mqtt: info
homeassistant.components.shell_command: debug
Cela permet de voir si la commande passe:
2021-02-04 18:57:29 INFO (SyncWorker_5) [homeassistant.components.command_line.switch] Running command: ssh -i /config/ssh_keys/id_rsa -o UserKnownHostsFile=/dev/null -o Str
ictHostKeyChecking=no pi@192.168.100.5 /home/dan/bin/setchacon.sh salon on
2021-02-04 18:57:36 INFO (SyncWorker_5) [homeassistant.components.command_line.switch] Running command: ssh -i /config/ssh_keys/id_rsa -o UserKnownHostsFile=/dev/null -o Str
ictHostKeyChecking=no pi@192.168.100.5 /home/dan/bin/setchacon.sh salon off
Pour davantage debugger si probleme pour les courageux , je me connecte directement sur le host home-assistant et puis sur le container *homeassistant pour tester ma commande ssh en direct:
$ docker exec -it homeassistant bash
bash-5.0# ssh -i /config/ssh_keys/id_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no dan@192.168.100.5 date
Warning: Permanently added '192.168.100.5' (ECDSA) to the list of known hosts.
jeu. 04 févr. 2021 19:25:49 CET
Voilà,
Ma configuration
System Health
version | core-2021.2.0 |
---|---|
installation_type | Home Assistant Supervised |
dev | false |
hassio | true |
docker | true |
virtualenv | false |
python_version | 3.8.7 |
os_name | Linux |
os_version | 5.4.72-v7+ |
arch | armv7l |
timezone | Europe/Paris |
Home Assistant Community Store
GitHub API | ok |
---|---|
Github API Calls Remaining | 5000 |
Installed Version | 1.10.1 |
Stage | running |
Available Repositories | 709 |
Installed Repositories | 5 |
Home Assistant Cloud
logged_in | false |
---|---|
can_reach_cert_server | ok |
can_reach_cloud_auth | ok |
can_reach_cloud | ok |
Hass.io
host_os | Raspbian GNU/Linux 10 (buster) |
---|---|
update_channel | stable |
supervisor_version | supervisor-2021.01.7 |
docker_version | 19.03.13 |
disk_total | 62.5 GB |
disk_used | 13.5 GB |
healthy | true |
supported | failed to load: Unsupported |
supervisor_api | ok |
version_api | ok |
installed_addons | Terminal & SSH (8.10.0), File editor (5.2.0), Bitwarden RS (0.6.2), Mosquitto broker (5.1), MariaDB (2.2.1) |
Lovelace
dashboards | 4 |
---|---|
resources | 4 |
views | 14 |
mode | storage |