Quand je ssh
dans un serveur, comment puis-je faire passer une variable d'environnement du client au serveur ? Cette variable d'environnement change entre les différentes invocations de ssh et je ne veux pas écraser les données. $HOME/.ssh2/environment
à chaque fois que je fais un appel ssh. Comment puis-je faire cela ?
Réponses
Trop de publicités?Je faisais une version personnalisée d'OpenSSH pour un appareil avec un cramfs dans le répertoire home et /etc (Cram FS est en lecture seule) donc ~/.ssh/environment ne fonctionnerait pas sans reconstruire tout le FS et il s'agissait d'appareils déployés sur le terrain (systèmes embarqués d'où l'utilisation de CRAMFS). Vous pouvez spécifier dans sshd_config l'emplacement du fichier authroized_keys mais pour une raison quelconque, l'environnement= ne fonctionne que pour les variables d'environnement dans ~/.ssh/authroized_keys. Editer le /etc/profile n'était pas une option et j'ai dû charger ssh dans un répertoire non standard. Dans session.c après child_set_env(.... "MAIL"...) ajoutez simplement les variables d'environnement dont vous avez besoin (c'est un hack je sais...) mais juste au cas où quelqu'un aurait besoin de variables d'environnement codées en dur pour une session, si vous compilez à partir des sources, vous pouvez le faire. TGI-FLOSS
Vous pouvez essayer d'invoquer une commande personnalisée, en supposant que la connexion ssh sans mot de passe est configurée. Sur le serveur, modifiez votre entrée ~/.ssh/authorized_keys qui correspond à la clé de votre client :
command="export VARIABLE=<something>" ssh-rsa <key>
Regardez ce lien dans la section Commande forcée pour un peu plus de détails.
Cela a fonctionné pour moi
ssh gitvps "VAR=hello FOO=world ;" echo \$VAR \$FOO
vous devez marquer les variables avec des espaces, des points-virgules et des signes de dollar ($) en utilisant le symbole "\" et des cotes simples.
ssh gitvps "VAR='hello:sd%\ \;\ s%' FOO='34\$34=,rtrt' ;" echo \$VAR \$FOO
- Réponses précédentes
- Plus de réponses