Подтвердить что ты не робот

Могу ли я пересылать переменные env по ssh?

Я работаю с несколькими разными серверами, и было бы полезно иметь возможность устанавливать некоторые переменные среды таким образом, чтобы они были активны во всех из них, когда я подключен к SSH. Проблема заключается в том, что содержимое некоторых переменных содержит чувствительные (хешированные пароли), и поэтому я не хочу оставлять его в файле .bashrc - я хотел бы сохранить его только в памяти.

Я знаю, что вы можете использовать SSH для пересылки переменной DISPLAY (через ForwardX11) или процесса агента SSH (через ForwardAgent), поэтому мне интересно, есть ли способ автоматически перенаправлять содержимое произвольных переменных среды через SSH-соединения, В идеале, я мог бы установить в файле .ssh/config, чтобы он запускался автоматически, когда мне это нужно. Любые идеи?

4b9b3361

Ответ 1

Вы можете, но это требует изменения конфигурации сервера.

Прочитайте записи для AcceptEnv в sshd_config (5) и SendEnv в ssh_config (5).

Обновление

Вы также можете передать их в командной строке:

ssh [email protected] "FOO=foo BAR=bar doz"

Что касается безопасности, обратите внимание, что любой, кто имеет доступ к удаленному компьютеру, сможет увидеть переменные среды, переданные любому запущенному процессу.

Если вы хотите сохранить эту секретную информацию, лучше передать ее через stdin:

cat secret_info | ssh [email protected] remote_program

Ответ 2

Вы не можете сделать это автоматически (кроме $DISPLAY, который вы можете переслать с помощью -X вместе со своей информацией Xauth, чтобы удаленные программы могли действительно подключаться к вашему дисплею), но вы можете использовать script с "здесь документ":

ssh ... <<EOF
export FOO="$FOO" BAR="$BAR" PATH="\$HOME/bin:\$PATH"
runRemoteCommand
EOF

Невыпущенные переменные будут разворачиваться локально, а результат передается на удаленную сторону. Таким образом, значение PATH будет установлено с удаленным значением $HOME.

Ответ 3

Что-то вроде:

ssh user @host bash -c "set -e; env ;. thescript.sh"

... может работать (не проверено)

Немного хак, но если по какой-то причине вы не можете изменить конфигурацию сервера, это может сработать.