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 |