Diiférence d'accès entre l'add-on Terminal & SSH st un ssh depuis une autre machine

Bonjour,

J’essaye de comprendre quelque chose qui pour l’instant est très mystérieuse pour moi.
J’ai un home assistant OS installé sur un Raspberry 4 connecté en Ethernet sur mon réseau.
J’ai installé l’add-on Terminal & SSH.
Quand je me connecte en terminal depuis l’interface Web de HA via cet add-on, je me retrouve dans un directory /root (commande pwd) qui contient :
.

.bash_history
.bash_profile
.ssh
.tmux.conf
addon_configs
addons
backup
config
homeassistant
media
share
ssl
Par contre si je me connecte depuis un autre ordinateur sur le PI4 avec ssh, je me retrouve dans un directory /root (commande pwd) qui contient (commande ls -a) :
.

.docker
.ssh

Ce ne sont pas les même directory /root !
Le quel est. vraiment utilisé par Home assistant ?
Et comment peut on passer de l’un à l’autre soit via la connection de l’add-on, soit via la connection ssh depuis un autre oridinateur ?

Si quelqu’un voulait bien me donner bune explikcation, j’ai recherché depuis Internet mais je n’ai pas trouvé.
Merci !
Alain

Ma configuration


[center]## System Information

version core-2025.2.5
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.13.1
os_name Linux
os_version 6.6.62-haos-raspi
arch aarch64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
HACS Data ok
GitHub API Calls Remaining 5000
Installed Version 2.0.5
Stage running
Available Repositories 1607
Downloaded Repositories 1
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 14.2
update_channel stable
supervisor_version supervisor-2025.02.1
agent_version 1.6.0
docker_version 27.2.0
disk_total 916.2 GB
disk_used 11.2 GB
healthy true
supported true
host_connectivity true
supervisor_connectivity true
ntp_synchronized true
virtualization
board rpi4-64
supervisor_api ok
version_api ok
installed_addons Terminal & SSH (9.16.0), Studio Code Server (5.18.3), Mosquitto broker (6.5.0), Zigbee2MQTT (2.1.1-1), Bookstack (2.4.2), MariaDB (2.7.2), Let’s Encrypt (5.3.3), Samba share (12.4.0), AdGuard Home (5.2.5), Linky (1.5.0)
Dashboards
dashboards 4
resources 4
views 22
mode storage
Network Configuration
adapters lo (disabled), end0 (enabled, default, auto), hassio (disabled), docker0 (disabled), veth2108dc5 (disabled), vethd78c2be (disabled), vethf1a772b (disabled), vetha9d2ee0 (disabled), veth74fc4cf (disabled), veth922b2b1 (disabled), vethb7a9088 (disabled), vethe0700fa (disabled), vethd8c4a6b (disabled), veth95530bc (disabled), veth7648f27 (disabled), veth94d45ca (disabled), veth0292d1c (disabled)
ipv4_addresses lo (127.0.0.1/8), end0 (192.168.1.71/24), hassio (172.30.32.1/23), docker0 (172.30.232.1/23), veth2108dc5 (), vethd78c2be (), vethf1a772b (), vetha9d2ee0 (), veth74fc4cf (), veth922b2b1 (), vethb7a9088 (), vethe0700fa (), vethd8c4a6b (), veth95530bc (), veth7648f27 (), veth94d45ca (), veth0292d1c ()
ipv6_addresses lo (::1/128), end0 (2a01:e34:ec7e:1780:562b:9e9:f899:33aa/64, fe80::8230:f35f:7895:3bbe/64), hassio (fe80::42:33ff:fee6:9662/64), docker0 (fe80::42:34ff:fedf:3b06/64), veth2108dc5 (fe80::18ff:56ff:fe8b:be6a/64), vethd78c2be (fe80::60bf:5bff:fe77:5b0b/64), vethf1a772b (fe80::b498:23ff:fecb:44b4/64), vetha9d2ee0 (fe80::b846:1bff:fec0:f486/64), veth74fc4cf (fe80::442e:86ff:fec9:1f2c/64), veth922b2b1 (fe80::e02f:9eff:fe88:58d7/64), vethb7a9088 (fe80::c471:ff:fed0:ff89/64), vethe0700fa (fe80::e898:83ff:fe30:9a5f/64), vethd8c4a6b (fe80::cc70:75ff:fe67:ddc9/64), veth95530bc (fe80::f04e:b8ff:fe5e:d95f/64), veth7648f27 (fe80::3cbc:c1ff:fe88:fe72/64), veth94d45ca (fe80::b4a7:76ff:fed4:ad63/64), veth0292d1c (fe80::b03f:51ff:fe56:8bf/64)
announce_addresses 192.168.1.71, 2a01:e34:ec7e:1780:562b:9e9:f899:33aa, fe80::8230:f35f:7895:3bbe
Recorder
oldest_recorder_run 10 février 2025 à 18:23
current_recorder_run 22 février 2025 à 16:32
estimated_db_size 240.57 MiB
database_engine sqlite
database_version 3.47.1
[/center]

Il n’y a pas de ssh active dans HAos

Il y’a 2 addon ssh n’aurait tu pas les 2 d’installés? @AlainGrach
Montre nous la configuration de ton addon ?

Sinon tu peux taper la commande ip a squi t’affiches l’IP tu devrais avoir 2 fois la même

Bonjour,

Merci de ton aide.
Comme il manque le message de Gilbert_VAISSIERE, je ne sais pas à quoi correspond ta réponse :
que le client « externe » pointe sur la machine physique.
Sinon, je ne crois pas avoir 2 addons, voici ma config de l’addon « Terminal et SSH » (j’ai effacé le contenu de la clé) :


Pour ce qui concerne la commande ip a s voici ce qu’elle donne dans l’addon :

Et ce qu’elle donne dans un ssh sur le PI4 depuis une autre machine :

# ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: end0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether d8:3a:dd:0e:bf:a8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.71/24 brd 192.168.1.255 scope global noprefixroute end0
       valid_lft forever preferred_lft forever
    inet6 2a01:e34:ec7e:1780:562b:9e9:f899:33aa/64 scope global dynamic noprefixroute 
       valid_lft 86258sec preferred_lft 86258sec
    inet6 fe80::8230:f35f:7895:3bbe/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether d8:3a:dd:0e:bf:a9 brd ff:ff:ff:ff:ff:ff
4: hassio: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:33:e6:96:62 brd ff:ff:ff:ff:ff:ff
    inet 172.30.32.1/23 brd 172.30.33.255 scope global hassio
       valid_lft forever preferred_lft forever
    inet6 fe80::42:33ff:fee6:9662/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
5: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:34:df:3b:06 brd ff:ff:ff:ff:ff:ff
    inet 172.30.232.1/23 brd 172.30.233.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:34ff:fedf:3b06/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
7: veth2108dc5@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master hassio state UP group default 
    link/ether 1a:ff:56:8b:be:6a brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::18ff:56ff:fe8b:be6a/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
9: vethd78c2be@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 62:bf:5b:77:5b:0b brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::60bf:5bff:fe77:5b0b/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
11: vethf1a772b@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master hassio state UP group default 
    link/ether b6:98:23:cb:44:b4 brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::b498:23ff:fecb:44b4/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
13: vetha9d2ee0@if12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master hassio state UP group default 
    link/ether ba:46:1b:c0:f4:86 brd ff:ff:ff:ff:ff:ff link-netnsid 2
    inet6 fe80::b846:1bff:fec0:f486/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
15: veth74fc4cf@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master hassio state UP group default 
    link/ether 46:2e:86:c9:1f:2c brd ff:ff:ff:ff:ff:ff link-netnsid 3
    inet6 fe80::442e:86ff:fec9:1f2c/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
17: veth922b2b1@if16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master hassio state UP group default 
    link/ether e2:2f:9e:88:58:d7 brd ff:ff:ff:ff:ff:ff link-netnsid 4
    inet6 fe80::e02f:9eff:fe88:58d7/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
19: vethb7a9088@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master hassio state UP group default 
    link/ether c6:71:00:d0:ff:89 brd ff:ff:ff:ff:ff:ff link-netnsid 5
    inet6 fe80::c471:ff:fed0:ff89/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
21: vethe0700fa@if20: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master hassio state UP group default 
    link/ether ea:98:83:30:9a:5f brd ff:ff:ff:ff:ff:ff link-netnsid 6
    inet6 fe80::e898:83ff:fe30:9a5f/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
23: vethd8c4a6b@if22: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master hassio state UP group default 
    link/ether ce:70:75:67:dd:c9 brd ff:ff:ff:ff:ff:ff link-netnsid 7
    inet6 fe80::cc70:75ff:fe67:ddc9/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
27: veth95530bc@if26: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master hassio state UP group default 
    link/ether f2:4e:b8:5e:d9:5f brd ff:ff:ff:ff:ff:ff link-netnsid 9
    inet6 fe80::f04e:b8ff:fe5e:d95f/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
29: veth7648f27@if28: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master hassio state UP group default 
    link/ether 3e:bc:c1:88:fe:72 brd ff:ff:ff:ff:ff:ff link-netnsid 10
    inet6 fe80::3cbc:c1ff:fe88:fe72/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
31: veth94d45ca@if30: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master hassio state UP group default 
    link/ether b6:a7:76:d4:ad:63 brd ff:ff:ff:ff:ff:ff link-netnsid 11
    inet6 fe80::b4a7:76ff:fed4:ad63/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
33: veth0292d1c@if32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master hassio state UP group default 
    link/ether b2:3f:51:56:08:bf brd ff:ff:ff:ff:ff:ff link-netnsid 8
    inet6 fe80::b03f:51ff:fe56:8bf/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

Moi, je ne sais même pas ce que ça veut dire !
Encore merci !
Alain

C’est bien un HAos que tu as installé ? Logiquement pas de ssh sur HAos après peut être que ce n’est pas le cas sur raspberry ?

On ne voit pas sur quel port est installé l’addon ?

Mais clairement vu les ip l’addon est dans un conteneur

Oui, c’est un HAos (remplacement de l’OS du Raspberry par Home Assistant).

Dans ma config, je n’ai pas indiqué de port pour SSH :


Je pense donc que ça doit être sur le port 22 (vu l’indication à droite).

Tu me confirmes que ce n’est pas normal que je tombe à deux endroits différents suivant que je passe par l’addon ou par une connexion depuis un ordinateur ?
Le ssh depuis un ordinateur se fait sur le port 22222, la commande est :
ssh root@192.168.1.71 -p 22222

Je viens d’avoir une idée :
J’ai arrêté l’addon dans Home Assistant.
Je ne peux donc plus ouvrir de terminal depuis l’interface web de home assistant (c’est normal !).
Mais j’ai toujours accès en ssh depuis un autre ordinateur, j’ai donc bien un autre accès ssh que celui de l’addon.

2ème manip :
J’ai indiqué le port 22221 dans la config de l’addon (le 22222 est déja pris par l’autre ssh).
je me suis connecté en ssh depuis un autre ordi avec le commande :
ssh root@192.168.1.71 -p 22221
J’ai évidemment un problème de clé, mais je peux rentrer et je me retrouve alors avec le même /root que via l’addon de Home Assistant.

Je progresse !!!

Ah mais oui voila l’addon est sur le port 22 et tu te connecte avec le 22222 voilà l’explication
Connecte toi avec le port 22 et tu arrivera au même endroit que l’addon

Et tu l’as trouve où ce port 22222 ?

En tout cas sur plateforme X86 il n’y a pas de ssh depuis HAos, mais ce n’est pas la même base d’os

Je ne me rappelle plus d’où sort ce port 22222 !?! :thinking:
Mais j’avais peut être créé un accès SSH en même temps que l’installation de Home Assistant sur le Raspberry ??

Je n’ai pas l’autorisation de me connecter sur le port 22 depuis un autre ordinateur, mais avec l’indication du port 22221 dans la config de l’addon, je peux me connecter via ce port et je tombe bien dans le même dossier /root que depuis l’addon dans Home Assistant.

Je vais donc recréer une clé pour l’accès depuis les ordinateurs de mon réseau.

1 « J'aime »

Bonjour,

J’avais supprimé ma réponse trop hative d’hier où j’indiquais que, depuis le module complémentaire Terminal & SSH on accède au container Home Assistant alors que depuis un autre appareil sur le réseau on accède à la machine physique.

Ce n’est pas exactement cela.

Mon HA « de production » étant sur une VM Proxmox, j’ai exhumé un Raspberry pour tester dans une situation proche de celle du message.

Le module complémentaire Terminal & SSH était déjà installé et configuré sur cet appareil, notamment la clé publique pour l’authentification SSH
Test : on accède au container core (prompt core-ssh) dans les deux cas de figure; l’adresse IP est en 172.30.xxx.xxx

   _¦¦_           _   _
 _¦¦¦¦¦¦_        | | | | ___  _ __ ___   ___

¦¦¦¦¯¯¦¦¦¦ | || |/ _ | ’ _ \ / _ \ _¦¦¦¦¦ ¦¦¦¦¦_ | _ | (_) | | | | | | __/ _¦¦¦¦¦¦_ _¦¦¦¦¦¦_ |_| |_|\___/|_| |_| |_|\___| _ ¦¦¦¦¦¦¦¦ ¦¦¯ ¯¦¦ / \ ___ ___(_)___| |_ __ _ _ __ | |_ ¦¦¦¯¯¦¦¦ ¦¦ _¦¦ / _ \ / __/ __| / __| __/ _ | '_ | |
¦¦ ¦¦ ¯ ¦¦¦¦¦ / ___ \
_
\ __ \ || (| | | | | |
¦¦¦__ ¯¦ ¦¦¦¦¦¦¦ // __//|/__,|| ||_|
¯¦¦¦¦¦
¦¦¦¦¦¦¦¯

Welcome to the Home Assistant command line.

System information
IPv4 addresses for end0:
IPv4 addresses for wlan0: 192.168.48.93/24
IPv6 addresses for wlan0: fe80::b59f:e578:e2ce:ab0e/64

OS Version: Home Assistant OS 14.2
Home Assistant Core: 2025.2.5

Home Assistant URL: http://ha-gv-01.home.arpa.local:8123
Observer URL: http://ha-gv-01.home.arpa.local:4357

[core-ssh ~]$ ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
18: eth0@if19: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:1e:21:00 brd ff:ff:ff:ff:ff:ff
inet 172.30.33.0/23 brd 172.30.33.255 scope global eth0
valid_lft forever preferred_lft forever

Remplacement par le module complémentaire Advanced SSH & Web Terminal et configuration
Test : on accède au container core dans les deux cas de figure, analogue au cas précédent

Remplacement par le module complémentaire Terminal & SSH (retour à la situation initiale)

Connexion à la console
ha > login
Aucun mot de passe n’est demandé

Copie du fichier authorized_keys depuis /mnt/data/supervisor/addons/data/core_ssh → /root/.ssh

Vérification

ls -Al /root/.ssh/authorized_keys

-rw------- 1 root root 271 Feb 22 22:16 /root/.ssh/authorized_keys
==> Le fichier a bien les droits root:root, mode 600

Démarrage du service SSH
systemctl start dropbear

Test depuis un autre appareil sur le réseau
On peut alors se connecter en SSH sur le port 22222 avec authetification par clés
==> On se retrouve dans la situation décrite dans le message :

Welcome to Home Assistant OS.

Use ha to access the Home Assistant CLI.

pwd

/root

ls -Al

total 2
drwxr-xr-x 2 root root 1024 Apr 4 2023 .docker
drwxr-xr-x 2 root root 1024 Feb 23 14:59 .ssh

ip ad

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: end0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether dc:a6:32:f0:a3:57 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether dc:a6:32:f0:a3:58 brd ff:ff:ff:ff:ff:ff
inet 192.168.48.93/24 brd 192.168.48.255 scope global dynamic noprefixroute wlan0
valid_lft 12952sec preferred_lft 12952sec
inet6 fe80::b59f:e578:e2ce:ab0e/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:cf:57:33:11 brd ff:ff:ff:ff:ff:ff
inet 172.30.232.1/23 brd 172.30.233.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:cfff:fe57:3311/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
5: hassio: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:63:5b:2d brd ff:ff:ff:ff:ff:ff
inet 172.30.32.1/23 brd 172.30.33.255 scope global hassio
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe63:5b2d/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
7: veth54432b1@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master hassio state UP group default
link/ether 9e:50:20:a3:e8:40 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::9c50:20ff:fea3:e840/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever

… plusieurs interfaces virtuelles avec des numéros pairs (if8, if10, …) et des adresses en IPv6

Sur cet appareil, à partir du moment où le fichier /root/.ssh/authorized_keys est présent au démarrage du système, le service SSH s’active automatiquement en écoute sur le port 22222

On trouvera des explications :

Parmi les hypothèses, l’appareil aurait pu être configuré depuis une clé USB (configuration réseau, service SSH) ?
A moins qu’il n’y ait une méthode depuis le GUI que je n’ai pas trouvée ?

A noter qu’il existe (ou a existé ?) un module complémentaire qui fait probablement la même chose :

En résumé
Sur mon Raspberry (idem sur la VM Proxmox) :
Depuis Terminal & SSH : container core
Après avoir créé le fichier /root/.ssh/authorized_keys depuis la console, on accède en SSH depuis une machine sur le réseau :

  • port 22 (par défaut) : container core
  • port 22222 : Home Assistant OS

Je n’ai pas d’explication sur la raison pour laquelle tu accèdes directement à Home Assistant OS en connexion SSH sur le port 22

saisissez ou collez du code ici

J’ai envoyé mon dernier message sans avoir vu les derniers échanges.
Désolé pour la mise en page par copier-coller. Je manque d’expertise sur ce forum.

C’est, pour moi, clair :
tu as configuré le SSH sur le port 22222, soit en démarrant avec une clé USB de paramétrage contenant la configuration IP et la clé publique SSH, soit en configurant depuis rpi-imager.
Si tu supprimes le fichier /root/.ssh/authorized_keys, tu ne pourras plus te connecter sur le port 22222 en aboutissant directement sur HAOS.

Je confirme qu’on a bien le même comportement depuis une VM / Proxmox. Il suffit de créer le fichier /root/.ssh/authorized_keys et de démarrer le service depuis une connexion en console.

Normal tu l’as changé en 22221 :laughing:

Oui,effectivement, il est possible que j’ai créé un accès SSH à l’installation de Home Assistant via une clé USB.
D’où mes deux accès…

1 « J'aime »