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

Как я могу установить переменные среды, когда я вхожу по ssh в свой Unix-ящик, передавая настраиваемые аргументы?

Я хочу передать некоторые параметры как часть моего ssh-соединения, которые я могу использовать для установки пользовательских переменных для моего входа в систему для выполнения определенных действий или запуска определенных сценариев. Как это сделать, запустив Putty на машине с Windows, подключившись через SSH к машине CentOS?

На машине с CentOS создайте в домашнем каталоге файл с именем .bashrc и установите там свои переменные среды. Например, содержимое файла может быть:

export VARIABLE=foo

Вот некоторые обсуждения этого: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_01.html


Вы также можете использовать SendEnv и AcceptEnv параметры. Это позволит передавать переменные среды на клиенте на сервер.

Вам также нужно будет изменить сервер sshd_config файл, чтобы указать, какие переменные среды принимаются сервером. Я не уверен, что вам нужно делать с PuTTY, чтобы выпустить SendEnv вариант, но это должно помочь вам начать работу.

Вы можете ввести переменные среды в конфигурацию PuTTY в разделе Connection -> Data.

Но это работает только при определенных условиях. Цитата из документация:

Протокол Telnet позволяет клиенту передавать переменные среды серверу. [...]

Версия 2 протокола SSH также предоставляет аналогичный механизм, который проще реализовать без недостатков безопасности. Новые серверы SSH-2 с большей вероятностью будут поддерживать его, чем старые.

Эти данные конфигурации не используются в протоколах SSH-1, rlogin или raw.

Кроме того, это должно быть разрешено на стороне сервера. Для сервера OpenSSH конфигурационная директива называется AcceptEnv. На сервере Ubuntu по умолчанию это выглядит так:

AcceptEnv LANG LC_*

Это позволяет вам определить переменную LANG и все переменные, начинающиеся с LC_ в PuTTY, поэтому вы всегда можете получить результат в предпочитаемом вами языке.

Если вы хотите установить дополнительные переменные, вам необходимо добавить их в список на всех серверах, к которым вы хотите подключиться. На старых (только SSH1) хостах это вообще не будет работать.

Вы можете изменить PermitUserEnvironment в sshd.conf, чтобы разрешить обработку параметров ~ / .ssh / environment или "environment =" для ключей в ~ / .ssh / authorized_keys.

Формат этих двух файлов различается. ~ / .ssh / environment - это строки VARIABLBE = VALUE, где в ~ / .ssh / authorized_keys параметр среды - environment = "VARAIBLE = VALUE"

Для тех, кто не может изменить sshd config по разным причинам и / или имеют +2000 серверов (и нет доступа к инструментам массовой конфигурации или не могут / не хотят изменять настройки для других пользователей), вот решение, которое я придумал:

В PuTTY загрузите желаемый сеанс, перейдите в Connection> SSH. В разделе «Данные для отправки на сервер» в поле «Удаленная команда» используйте:

env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...] bash

Пример:

env -u PS1 PS1="[\u@\h]\\$ " bash

Сначала я отключил переменную, иначе она не сработала.