Solution 1 :
En supposant que vous avez UsePAM yes
en /etc/ssh/sshd_config
, et en supposant que vous souhaitiez que ces variables d'environnement soient définies pour chaque utilisateur, vous pouvez demander à pam de définir des variables d'environnement pour vous. Si vous avez les variables d'environnement définies dans /etc/gitenv
vous pouvez ajouter cette ligne à /etc/pam.d/sshd
auth required pam_env.so envfile=/etc/gitenv
Ou en inspectant ce fichier, vous constaterez peut-être qu'il y a déjà un pam_env.so utilisé, et déjà un fichier auquel vous pouvez ajouter des éléments. Soyez juste prudent et assurez-vous d'avoir soigneusement testé vos modifications avant de mettre fin à votre session ssh, car lorsque vous jouez avec pam, vous pouvez complètement interrompre votre capacité à vous connecter à votre serveur, si vous ne faites pas attention.
Solution 2 :
Je définis une variable d'environnement pour mes connexions SSH en utilisant le ~/.ssh/environment
. Le fichier peut contenir une variable sous la forme VAR=value
, pas besoin de les exporter explicitement.
Cependant, ce fichier de configuration utilisateur est ignoré par défaut par le processus du serveur SSH, sauf si l'option PermitUserEnvironment est définie sur yes. Par conséquent, vous devez vous assurer de modifier /etc/sshd_config sur le serveur SSH pour ajouter ou mettre à jour ce paramètre :
PermitUserEnvironment yes
Vous devez recharger la configuration du serveur SSH. Sur RHEL ou Suse Linux, vous le faites (en tant que root)
/sbin/service sshd reload
(Remplacer éventuellement sshd par ssh si ça ne marche pas)
Sur Ubuntu (en utilisant upstart), vous le faites
sudo reload ssh
Sur n'importe quel autre Linux, vous pouvez essayer (en tant que root)
/etc/init.d/sshd reload
(Remplacez sshd par ssh ou openssh ou quoi que ce soit qui correspondrait au script d'initialisation du serveur SSH)
Solution 3 :
Je n'ai plus d'hébergeur mutualisé godaddy, je ne peux donc pas vérifier si les solutions proposées sont valides. Cela restera la réponse acceptée, car cela a fonctionné par moi quand j'ai posé la question. Les autres réponses pourraient également fonctionner. Je laisse la communauté en décider avec des votes positifs.
D'accord. La solution est qu'il n'y a pas de solution sur un hôte partagé godaddy. J'ai tout essayé, mais rien ne fonctionne, j'ai donc décidé de rester avec les ~/.ssh/authorized_keys :
command="~/connect.sh" ssh-rsa AAAAB3NzaC...
Dans le ~/connect.sh :
#!/bin/bash
if [ -f "${HOME}/.env_profile" ]; then
source ~/.env_profile
fi;
if [ "x${SSH_ORIGINAL_COMMAND}x" == "xx" ]; then
$SHELL --login
else
eval "${SSH_ORIGINAL_COMMAND}"
fi;
Et dans le ~/.env_profile :
export PATH=$PATH:$HOME/bin:$HOME/git/libexec/git-core
export LD_LIBRARY_PATH=$HOME/git/lib
export GIT_EXEC_PATH=~/git/libexec/git-core
export GIT_TEMPLATE_DIR=~/git/share/git-core/templates
Je dois donc copier la commande ="..." sur chaque clé rsa dans les clés autorisées. Il s'agit d'une duplication de code, mais je ne pense pas qu'il existe une autre solution sur un hébergeur mutualisé godaddy.