Я использую продукт под названием 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_*