- Accueil
- Réseau multi-cloud
- Customer Edge diagnostics
- Reaching a Customer Edge
- SSH
SSH
Capturé le 2026-07-28 depuis un CE de ce déploiement. sitecli/capture-manifest.json
enregistre le nœud concerné, et scripts/capture-sitecli.sh --check revérifie la surface
de commande sur un CE actif.
SSH atteint le compte admin de l’appliance, dont le shell de connexion est le Site CLI
(/opt/bin/vpmu). C’est la seule voie d’accès à la surface de commande complète sur la boîte —
l’API de débogage expose 34 commandes, et l’appliance elle-même en offre
bien d’autres qui ne figurent pas du tout dans cette API.
cd terraformSLI=$(terraform output -json ce_sli_private_ips | jq -r '.eastus01')ssh -tt -i ~/.ssh/id_ed25519 -J azureuser@<operator-vm> "admin@$SLI"Chaque élément de cette ligne de commande est indispensable, et les trois sections suivantes expliquent quelle erreur chacun prévient.
Il n’existe pas d’invite shell sur laquelle atterrir : le shell de connexion d’admin est
le Site CLI, vous arrivez donc directement à son invite >>>. Exécutez les commandes sur la
boîte avec execcli <name> à cet endroit — voir les
commandes sur la boîte.
Pourquoi cloud-init écrit la clé, et non l’API
Section intitulée « Pourquoi cloud-init écrit la clé, et non l’API »admin_user_credentials.ssh_key sur l’objet site ressemble exactement au champ prévu pour
cela. Il est accepté, survit à une relecture, et ne configure rien. vpm est propriétaire
des utilisateurs locaux du nœud et refuse de modifier celui-ci — d’après le journal propre
du nœud, à trois reprises lors d’un seul démarrage :
vpm users.go:165: Won't do any change for user admin (internal skip)Tout le reste découle de cette seule ligne. /var/home/admin/.ssh n’existe jamais, avant
ni après que le site atteigne ONLINE. La date de dernier changement du shadow d’admin
reste à la date de construction de l’image tandis que vesbkp et vesopcon affichent la
date actuelle, car vpm a configuré ces deux-là et a ignoré admin. Et vpm ne journalise
rien concernant ssh_key ou authorized_keys à aucun moment.
Le fichier doit donc être écrit en dehors de vpm. admin est l’uid 2202, gravé dans
l’image du nœud, il existe donc avant l’exécution de cloud-init et owner: admin:admin
est résolu au moment de l’écriture — pas de runcmd, pas de correction de propriété :
- path: /var/home/admin/.ssh/authorized_keys permissions: "0600" owner: admin:admin content: | ${ssh_public_key}sshd était toujours disposé à répondre. sshd -T rapporte pubkeyauthentication yes,
et admin apparaît dans AllowUsers dans les deux fichiers sshd_config livrés sur le
nœud. Il n’y avait jamais rien à activer — seulement un fichier manquant.
Pourquoi il répond sur une seule adresse
Section intitulée « Pourquoi il répond sur une seule adresse »sshd lie 0.0.0.0:22, mais seule l’adresse interne (SLI) se trouve sur la pile
réseau de l’hôte d’une manière à laquelle sshd répondra. eth0 est renommé a-i-eth0 et
ne porte aucune IP hôte — le plan de données Argo est propriétaire de cette interface, et
l’adresse de gestion/SLO qu’elle aurait portée apparaît sur vhost0 à la place. Les deux
autres NIC restent sur la pile hôte sous leurs propres noms.
Sondé depuis une VM à l’intérieur du VNet, sur un CE :
adresse management/SLO délai dépasséadresse externe délai dépasséadresse interne/SLI OUVERTE SSH-2.0-OpenSSH_8.7adresse inutilisée délai dépassé (contrôle)Un sondage sur l’adresse par laquelle vous connaissez le nœud renvoie donc exactement ce que retourne un groupe de sécurité fermé. Rien ne le bloque ; il n’y a simplement pas de listener sur cette adresse.
Les adresses publiques du CE n’ont pas non plus de listener sur le port 22, ce qui explique
pourquoi la commande ci-dessus utilise -J : une VM opérateur à l’intérieur du VNet, dans
le même sous-réseau que les adresses SLI. Ce déploiement en construit une à cet effet —
terraform output -raw client_vm_name la nomme.
Le Site CLI nécessite un terminal et un retour chariot
Section intitulée « Le Site CLI nécessite un terminal et un retour chariot »Le shell de connexion d’admin n’est pas un shell. C’est une application go-prompt, qui
met le terminal en mode raw et lit des frappes clavier plutôt que des lignes. Quatre
conséquences, chacune échouant d’une manière qui ressemble à un problème différent :
| Mécanisme | Ce qui se passe sans lui |
|---|---|
Allouer un terminal (ssh -tt) | panic: no such device or address de go-prompt.NewStandardInputParser, ce qui ressemble à une appliance en plantage |
| Envoyer un retour chariot, et non un saut de ligne, pour Entrée | La ligne n’est jamais soumise, et la session se ferme en fin d’entrée sans avoir rien affiché |
| Garder l’entrée standard ouverte | La connexion se termine avant que la commande ait été rendue, donc une commande fonctionnelle semble silencieuse |
| Écrire le texte de la commande et l’octet Entrée séparément | Le saut de ligne atterrit dans le tampon comme un caractère littéral et le CLI répond unknown command, ce qui donne l’impression que la commande n’existe pas |
ssh host 'some-command' ne fonctionne donc pas : l’argument est ignoré et l’invite
interactive démarre quand même. Pilotez-le comme un terminal ou pas du tout.
scripts/sitecli_ssh_harvest.py est l’implémentation de référence.
La bannière est un contrôle de santé gratuit
Section intitulée « La bannière est un contrôle de santé gratuit »Avant de taper quoi que ce soit, la bannière de connexion a déjà répondu à plusieurs des
questions sur lesquelles vous auriez autrement passé des commandes. Depuis f5-xc-ce-vm-01,
art ASCII et IP publique masqués :
UNAUTHORIZED ACCESS TO THIS DEVICE IS PROHIBITEDAll actions performed on this device are audited
Using https://register.ves.volterra.ioOS: rhel-9.2024.6Memory: 32768MiBStorage: sda: 31GiBCPU: Model: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz | CPUs: 8Software: crt-20250613-3382DNS: 168.63.129.16: OKNTP: SyncedUptime: 0 days, 5 hours, 20 minutesRegistration Status: PROVISIONEDSLO IP: 10.0.1.4/26WELCOME IN SITE CLIRegistration Status distingue un nœud encore en cours de démarrage (PROVISIONING) d’un
nœud terminé (PROVISIONED). Software est la chaîne de build qui détermine quelles
commandes existent. DNS et NTP couvrent les deux dépendances qui cassent l’enregistrement
en premier, donc un nœud qui n’est jamais passé en ligne vous a généralement déjà dit pourquoi
ici — avant que
chronyc-sources ou
dig soient nécessaires.
Fournir la paire de clés
Section intitulée « Fournir la paire de clés »-
Générez une paire de clés, si vous n’en avez pas déjà une. Ed25519 plutôt que RSA : plus courte, et acceptée par le
sshdde l’appliance.Fenêtre de terminal ssh-keygen -t ed25519 -C "ce-operator" -f ~/.ssh/id_ed25519 -
Pointez le déploiement vers la moitié publique. Le module racine lit le fichier une fois et transmet la chaîne à chaque nœud :
terraform/terraform.tfvars ssh_public_key_path = "~/.ssh/id_ed25519.pub"ssh_public_keyprend le matériau en ligne à la place, ce qui est ce qu’utilisent les tests de plan. La moitié privée ne quitte jamais votre poste de travail. -
Appliquez. Lisez d’abord l’avertissement en haut de cette page — sur un déploiement existant, cela remplace les VMs CE.
Ce que ce n’est pas
Section intitulée « Ce que ce n’est pas »Chacun de ces éléments a été testé et écarté alors que la voie était encore considérée comme impossible. Chacun est suffisamment plausible pour coûter une journée.
| Pas la cause | Comment cela a été écarté |
|---|---|
| L’identifiant ne s’applique qu’à la création | sshd démarre environ 90 secondes après le premier démarrage, avant que l’objet site existe. admin_user_credentials est également présent dans ReplaceSpecType et s’applique en place. |
block_all_services | La fermeture du port 22 sur l’adresse de gestion est identique que les services soient bloqués ou non. |
| Un saut de ligne en fin de clé | Testé dans les deux sens, aucun changement. Cloud-init le supprime quand même, car un bloc littéral rendrait autrement une deuxième ligne vide. |
| Un logiciel CE épinglé et plus ancien | Reproduit sur trois builds, dont un exécutant OpenSSH 9.9. |
Un admin_password manquant | Définir admin_password aux côtés de ssh_key sur un CE créé de zéro n’a rien changé. |
Les autres voies
Section intitulée « Les autres voies »ONLINE.