Действительно ли возможно изменить значение $TERM при вызове ssh?

Порт на клиенте произволен и упоминается как эфемерный для Вашей ссылки.

21
задан 17 August 2011 в 19:37
5 ответов
TERM=vt100 ssh some.host.name

На удаленном компьютере выполнить echo $ TERM .

7
ответ дан 2 December 2019 в 20:05

man ssh:

     ssh reads ~/.ssh/environment, and adds lines of the format
     “VARNAME=value” to the environment if the file exists and users are
     allowed to change their environment.  For more information, see the
     PermitUserEnvironment option in sshd_config(5).

Edit:

Крысы, я надеялся, что это может быть с местной стороны, но все же, если есть желание, есть способ. man ssh_conf:

SendEnv
             Specifies what variables from the local environ(7) should be sent
             to the server.  Note that environment passing is only supported
             for protocol 2.  The server must also support it, and the server
             must be configured to accept these environment variables.  Refer
             to AcceptEnv in sshd_config(5) for how to configure the server.
             Variables are specified by name, which may contain wildcard char-
             acters.  Multiple environment variables may be separated by
             whitespace or spread across multiple SendEnv directives.  The
             default is not to send any environment variables.

В зависимости от конфигурации sshd на принимающей стороне это может или не может соответствовать требованию «запретить удаленную модификацию файла».

7
ответ дан 2 December 2019 в 20:05

Вот мое быстрое и грязное решение, которое я только что придумал. Я бы предпочел что-нибудь получше. Думаю, вместо этого я мог бы использовать сценарий оболочки. Настройка значений TERM оставлена ​​в качестве упражнения для читателя.

# To move into a separate plugin...
function ssh {
   if [[ "${TERM}" = screen* || konsole* ]]; then
     env TERM=screen ssh "$@"
   else
     ssh "$@"
   fi
}

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

5
ответ дан 2 December 2019 в 20:05

Я добавил следующий псевдоним в свой файл .bashrc. Он использует ответ OG, но оборачивает его псевдонимом. Работает как шарм;)

# Force xterm-color on ssh sessions
alias ssh='TERM=xterm-color ssh'
9
ответ дан 2 December 2019 в 20:05

04 июня 2021 г. «разрешить ssh_config SetEnv переопределять $TERM» было зафиксировано в openssh-portable , что, похоже, позволит вам установить SetEnv TERM в ~/.ssh/config, например, в директиве Host. (Или это позволит вам, как только выпуск будет сокращен с этим патчем, предположительно.)

4
ответ дан 4 June 2021 в 05:12

Теги

Похожие вопросы