Назад | Перейти на главную страницу

Переменные среды через неинтерактивное соединение SSH?

Я использую продукт под названием vlad, который устанавливает неинтерактивные ssh-подключения к моему серверу Ubuntu, но проблема в том, что он не видит никаких переменных среды.

Я гуглил как сумасшедший, но не могу найти решения. Я попытался добавить переменные в файл .ssh / environment для пользователя на моем сервере, а также изменить настройки в / etc / ssh / sshd_config, но без радости.

Кто-нибудь может помочь?

Привет,

Крис

Проверьте свой / etc / ssh / ssh_config (на клиенте) и посмотрите параметр SendEnv. В моем случае у меня SendEnv LANG LC_*.

Есть несколько интересных сведений в человек ssh_config

Если вы контролируете сам вызов команды ssh, вы можете попробовать что-то вроде этого:

ssh user@remoteserver MYVAR1="$MYVAR1" MYVAR2="$MYVAR2" command

Я также использую tee (для наглядности) и heredoc для отправки удаленных сценариев bash:

tee << '+++' | ssh user@remoteserver MYVAR1="$MYVAR1" MYVAR2="$MYVAR2" bash
  set -x
  echo "hey, your variable is $MYVAR1"
  echo "and your other variable is $MYVAR2"
+++

У вас есть переменные среды, определенные в ~/.bashrc на сервере? Иногда что-то читают ~/.profile вместо. Один трюк, который я делаю, - это символическая ссылка ~/.profile к ~/.bashrc,

например.:

ln -s ~/.bashrc ~/.profile

я предполагаю, что ваши переменные среды находятся в неправильном файле. есть два разных файла, которые используются для входа в систему / интерактивных оболочек.

взгляните на этот пост:
В чем разница между "Логином" и "Интерактивной" оболочкой bash

РЕДАКТИРОВАТЬ: хорошо, теперь для неинтерактивных входов в систему:
вы входите в систему с помощью ключа? когда да, вы можете добавить это в свой authorized_keys файл:

environment="NAME=value"
         Specifies that the string is to be added to the environment when logging in using this key.  Environment variables set this way override other
         default environment values.  Multiple options of this type are permitted.  Environment processing is disabled by default and is controlled via
         the PermitUserEnvironment option.  This option is automatically disabled if UseLogin is enabled.

(от человека sshd)

Какая оболочка у этого пользователя на сервере? Если это bash, то должны работать ~ / .bash_profile или ~ / .profile, содержащие все переменные (или что-то вроде ". / Etc / environment"). Если это не bash, подумайте об изменении :)

@Dom (я не могу оставлять комментарии): у меня работает /etc/ssh/sshd_config

AcceptEnv LANG LC_*