9 votes

Comment puis-je définir des variables d'environnement lorsque je me connecte par ssh à ma machine Unix en passant des arguments personnalisés ?

Je veux passer certains paramètres dans le cadre de ma connexion ssh que je peux utiliser pour définir des variables personnalisées pour ma connexion afin de faire certaines choses ou d'exécuter certains scripts. Comment faites-vous cela en utilisant Putty sur une machine Windows, en vous connectant via SSH à une machine CentOS ?

7voto

cjc Points 24265

Sur la machine CentOS, créez un fichier dans votre répertoire personnel nommé .bashrc et définissez vos variables environnementales à cet endroit. Par exemple, le contenu du fichier peut être :

export VARIABLE=foo

Voici une discussion à ce sujet : http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_01.html


Vous pouvez également utiliser le SendEnv et AcceptEnv options. Cela permettra aux variables environnementales du client d'être transmises au serveur.

Vous devrez également modifier les paramètres d'accès au serveur. sshd_config pour spécifier quelles variables d'environnement sont acceptées par le serveur. Je ne suis pas sûr de ce que vous devez faire avec PuTTY pour émettre la commande SendEnv mais cela devrait vous permettre de commencer.

0 votes

Oui, je sais comment faire, mais comment puis-je transmettre des variables dans le cadre de ma connexion ?

0 votes

Modifié pour inclure la suggestion SendEnv et AcceptEnv.

7voto

Gerald Schneider Points 17588

Vous pouvez entrer des variables d'environnement dans la configuration de PuTTY sous Connection -> Data .

enter image description here

Mais cela ne fonctionne que dans certaines conditions. Citation du documentation :

Le protocole Telnet fournit un moyen pour le client de transmettre des variables d'environnement au serveur. [...]

La version 2 du protocole SSH fournit également un mécanisme similaire, plus facile à mettre en œuvre sans faille de sécurité. Les serveurs SSH-2 les plus récents sont plus susceptibles de le prendre en charge que les anciens.

Ces données de configuration ne sont pas utilisées dans les protocoles SSH-1, rlogin ou raw.

En outre, cela doit être autorisé du côté du serveur. Pour le serveur OpenSSH, la directive de configuration s'appelle AcceptEnv . Sur un serveur Ubuntu, il ressemble à ceci par défaut :

AcceptEnv LANG LC_*

Cela vous permet de définir la variable LANG et toutes les variables commençant par LC_ dans PuTTY, afin que vous puissiez toujours obtenir la sortie dans votre langue préférée.

Si vous voulez définir des variables supplémentaires, vous devez les ajouter à la liste sur tous les serveurs auxquels vous voulez vous connecter. Sur les hôtes plus anciens (SSH1 uniquement), cela ne fonctionnera pas du tout.

1 votes

AcceptEnv est situé par défaut dans : /etc/ssh/sshd_config N'oubliez pas de redémarrer le service ssh ( service ssh restart ) pour appliquer les changements par la suite.

3voto

yahol Points 81

Pour ceux qui ne peuvent pas modifier sshd pour diverses raisons et/ou ont +2000 serveurs (et n'ont pas accès aux outils de configuration de masse ou ne peuvent/veulent pas changer les paramètres pour les autres utilisateurs), voici une solution que j'ai trouvée :

enter image description here

Dans PuTTY, chargez la session souhaitée, allez dans Connexion > SSH. Dans la section "Données à envoyer au serveur", dans le champ "Commande à distance" utiliser :

env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...] bash

Exemple :

env -u PS1 PS1="[\u@\h]\\$ " bash

J'ai d'abord désactivé la variable, car cela ne fonctionnait pas autrement.

0 votes

Vous pouvez ajouter des variables via l'onglet Données comme le montre @Gerald Schneider dans sa réponse.

0 votes

Pas dans mon scénario. J'ai d'abord essayé toutes les options évidentes dans PuTTY, avant de trouver cette astuce. Veuillez lire attentivement les 7 premiers mots de ma réponse. La réponse de Gerald le mentionne également : cela doit être autorisé du côté du serveur .

0 votes

@yahol Votre solution m'a en quelque sorte privé d'avoir un terminal, vim dit maintenant : Vim: Warning: Output is not to a terminal

2voto

natebc Points 473

Vous pouvez modifier PermitUserEnvironment dans sshd.conf pour permettre le traitement des options ~/.ssh/environment ou "environment=" sur les clés dans ~/.ssh/authorized_keys.

Le format de ces deux fichiers diffère. ~/.ssh/environment contient des lignes de VARIABLBE=VALUE alors que dans ~/.ssh/authorized_keys l'option d'environnement est environment="VARAIBLE=VALUE".

1 votes

Ok, j'ai trouvé où changer PermitUserEnv mais comment passer les paramètres ?

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