Я делаю ssh для сервера Open SUSE linux из windows cygwin. Я пытаюсь отправить одну из своих локальных переменных среды с помощью команды ssh, чтобы я мог загрузить какой-то конкретный файл .bashrc сразу после входа в систему. Вот что я пробовал.
Windows Machine имеет эту переменную env
IDENTITY=samiron
echo %IDENTITY%
samiron
В Linux-машине у меня есть
vim /etc/ssh/sshd_config
AcceptEnv IDENTITY
В /home/user/.bashrc
Я написал что-то вроде
export ME=$IDENTITY
Мой план - иметь такой файл, как .bashrc.samiron
и делай source ~/.bashrc.$ME
из .bashrc
файл.
Однако я делаю ssh, как показано ниже, и ожидаю, что переменная $ME
содержать "samiron"
ssh -o SendEnv=IDENTITY user@server.com
Но после регистрации
user@server:~> echo $ME
Это ничего не показывает. Кто-нибудь может подсказать мне, что я здесь делаю не так?
Прежде чем он сможет работать должным образом, должны быть выполнены следующие два условия:
Ваш ssh-сервер должен быть настроен для приема пересылки переменных из локальной клиентской среды. Поскольку такое поведение может быть опасно для безопасности, оно обычно отключено по умолчанию. Вы можете включить его, указав "AcceptEnv" в конфигурации вашего ssh-сервера. Так что поместите что-то подобное в / и т.д. / SSH / sshd_config файл и перезагрузить служба ssh-сервера (имена переменных могут содержать подстановочные знаки, вы можете указать несколько переменных, разделенных пробелами, подробности в человек sshd_config)
AcceptEnv VARIABLE_NAME
Эта функция работает для протокола ssh версия 2 только. Это по умолчанию выполняется почти во всех современных дистрибутивах Linux, если не было изменено («Протокол» директива).
О, мне не хватало части перезапуска сервера sshd.
sudo /etc/init.d/sshd restart
решил мою проблему