148 votes

Lors d'une connexion ssh, comment puis-je définir une variable d'environnement sur le serveur qui change d'une session à l'autre ?

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 ?

4voto

grepit Points 183

Juste une simple commande :

ssh -t your_host_or_ip 'export some_var_name=whatever_you_want; bash'

2voto

Will Points 21

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

1voto

emptyset Points 421

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.

1voto

Fabiel León Points 11

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X