4

Я использую WinSSHd на нескольких серверах Windows. Чтобы получить к ним доступ с моего Mac (и, по-видимому, практически с любого терминала на базе Unix), мне нужно установить переменную среды TERM на cygwin , например:

TERM=cygwin ssh someserver.com

Я также могу использовать .ssh/config для установки определенных значений по умолчанию для этого сервера, таких как другой пользователь и порт не по умолчанию:

host someserver.com
    User SomeDifferentDude
    Port 22222

Однако я, очевидно, не могу установить переменные среды таким образом. Во всяком случае, я ничего не нашел в man ssh_config . Есть ли способ установить эмуляцию терминала по умолчанию (и / или любую переменную среды) для каждого хоста?

3 ответа3

2

Обычно вы устанавливаете переменную среды на стороне сервера.

Если WinSSHd достаточно похож на openssh (обычная реализация ssh для Unix), вы можете определить файл среды (~/.ssh/environment в unix) и поместить туда TERM=cygwin .

Вы также можете установить переменную окружения в вашем файле инициализации оболочки. Поскольку вы упоминаете cygwin, это, вероятно, ~/.bash_profile где ~ - ваш домашний каталог cygwin. Вы должны установить его условно, если вы также используете cygwin на терминалах других типов; например, чтобы установить его, только если вы входите через ssh (опять же, если предположить, что WinSSHd достаточно похож на openssh):

if [ -n "$SSH_CLIENT" ]; then
  export TERM=cygwin
fi
1

Оказывается, есть гораздо лучшее решение - WinSSHd поддерживает формат terminfo Unix, поэтому все, что мне нужно было сделать, это скопировать соответствующий файл terminfo (в случае OS X: xterm-color) в его каталог, и настройка TERM=cygwin станет ненужным.

0

Вы можете использовать SendEnv TERM чтобы установить TERM на сервере таким же, как TERM на вашем локальном компьютере.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .