Моя проблема в том, что я должен установить переменные env (например, GIT_EXEC_PATH) на сервере. Мне нужны эти переменные для каждого соединения (например, для bash и для удаленных команд). Мне удалось установить эти переменные с помощью bash .bash_profile, но у меня проблемы с удаленными командами. Я обнаружил, что можно написать команды в ~ / .ssh / authorized_keys до фактического ключа rsa, но я не хочу писать там всегда, мне нужно постоянное решение ... Я обнаружил, что ~ / .ssh Файл / rc выполняется при каждом входе в систему через ssh, поэтому я поместил туда объявления переменных env, но это не сработало. Переменные задаются в файле rc, но после этого они исчезают. : S Может быть, файл rc работает в подоболочке: S Есть ли способ определить эти переменные в bash и в удаленных командах без дублирования кода?
Редактировать:
Я отредактировал вопрос, потому что сервер является общим хостом Godaddy, поэтому он имеет уникальный конфиг. Файлы / etc / ssh / sshd_config и / etc / ssh / ssh_config пусты. В этих файлах есть комментарии, если вам интересно, я могу скопировать их здесь.
- Источник ~ / .bash_profile (только для соединений bash),
- ~ / .bashrc никогда не поступает,
- ~ / .profile никогда не получен,
- окружение ~ / .ssh / никогда не создается,
- источник ~ / .ssh / rc (как bash, так и remote), но я думаю, что он вызывается в подоболочке, потому что переменные исчезают.
- Файл ~ / .ssh / авторизованный_кейсис поступает каждый раз, но мне приходится писать команды перед каждым ключом rsa (поэтому я не хочу настраивать это).
Резюме:
Я могу хорошо настроить bash (с помощью .bash_profile), но не могу настроить удаленные вызовы. Это проблема. Я ищу файл, полученный из команд bash и remote.
Например:
Команда git-upload-pack находит exe-файл, потому что переменная env GIT_EXEC_PATH установлена, но с удаленным: «git clone user@domain.com: myrepo local / myrepo» сервер не находит эту команду, потому что GIT_EXEC_PATH не установлен.
Edit2:
В соответствии с этим и моими журналами printenv: ~ / .ssh / rc работает в обычной оболочке, а не в подоболочке, поэтому загадка, почему переменные env не залипают ...
Я создал исполняемый файл: ~ / logenv :
echo "" >> mylog.txt
date >> mylog.txt
printenv >> mylog.txt
echo "" >> mylog.txt
И поместите это в ~ / .ssh / rc :
export AAA=teszt
source ~/logenv
С помощью bash login & "source logenv" результат был:
Tue May 15 04:21:37 MST 2012
TERM=cygwin
SHELL=/bin/bash
SSH_CLIENT=censored
SSH_TTY=/dev/pts/2
USER=myuser
AAA=teszt
MAIL=/var/mail/myuser
PATH=/usr/local/bin:/bin:/usr/bin
PWD=/home/content/65/7962465
SHLVL=3
HOME=/var/chroot/home/content/65/7962465
LOGNAME=myuser
SSH_CONNECTION=censored
_=/usr/bin/printenv
Tue May 15 04:21:41 MST 2012
HOSTNAME=censored
TERM=cygwin
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=censored
Удаленным "ssh myuser@domain.com 'exec ~ / logenv'" результат был:
Tue May 15 04:25:52 MST 2012
SHELL=/bin/bash
SSH_CLIENT=censored
USER=myuser
AAA=teszt
MAIL=/var/mail/myuser
PATH=/usr/local/bin:/bin:/usr/bin
PWD=/home/content/65/7962465
SHLVL=3
HOME=/var/chroot/home/content/65/7962465
LOGNAME=myuser
SSH_CONNECTION=censored
_=/usr/bin/printenv
Tue May 15 04:25:52 MST 2012
SHELL=/bin/bash
SSH_CLIENT=censored
USER=myuser
PATH=/usr/local/bin:/bin:/usr/bin
MAIL=/var/mail/myuser
PWD=/home/content/65/7962465
HOME=/var/chroot/home/content/65/7962465
Итак, файл rc получен, но после этого переменные исчезают ...: S