Я хочу передать некоторые параметры как часть моего 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
Сначала я отключил переменную, иначе она не сработала.