Таким образом для одного из моих серверов, большая часть того, что я делаю, отредактировать файлы с энергией. Действительно ли возможно сделать что-то как ssh me@myserver vim
? То, когда я пытаюсь сделать это, я получаю "Предупреждение, произвожу, не к терминалу", и энергия неприменима.
Я прочитал ssh страницу справочника, но удару не нравится, когда символ ESC ~C создает терминал команды.
Сессии SSH могут быть запущены с – или без – удаленный сервер, выделяющий псевдотерминал (ИМУЩЕСТВО) устройство.
Обычно, когда Вы соединяетесь с удаленным хостом через SSH (не указывая команду), Вы выполняете свою оболочку входа в систему по умолчанию после аутентификации правильно. При выполнении этой оболочки на удаленном хосте псевдотерминал автоматически выделяется для интерактивной оболочки. Это позволяет оболочке писать в экран пользователя так, чтобы это могло сделать вещи, такие как дисплей его подсказка.
Во время интерактивной сессии, SSH_TTY
переменная среды установлена на узел устройства удаленного устройства ИМУЩЕСТВА, например, /dev/pts/10
и когда псевдотерминал выходит, ssh
печать следующее сообщение:
Connection to <remotehost> closed.
Для неинтерактивных сессий SSH, т.е. определения команды для работы удаленного хоста не выделяется никакой псевдотерминал, и вывод команды отправляется в stdout
из локального терминала. Это поведение по умолчанию работает хорошо при выполнении команд, которые просто читают вход из stdin
и печать к stdout
и/или stderr
, например, ls
, ps
, и т.д. В этом случае SSH_TTY
переменная среды не установлена, и я также заметил что TERM
переменная среды установлена на dumb
. При работе без псевдотерминала, символы ESC такой как ~C
не поддерживаются; это делает безопасным для программ передать двоичные файлы, которые могут содержать эти последовательности.
Однако программы такой как vim
или top
потребность смочь перерисовать экран с помощью различных терминальных возможностей (обычно использующий ncurses
библиотека). Для этого они требуют оконечного устройства – или устройство, которое эмулирует терминал. ssh
клиентские функции a -t
опция, которая вызывает выделение псевдотерминала. Это -t
опция описана в странице справочника SSH:
Вызовите pseudo-tty выделение. Это может использоваться для выполнения произвольных основанных на экране программ на удаленной машине, которая может быть очень полезной, например, при реализации сервисов меню. Несколько-t опций вызывают tty выделение, даже если ssh не имеет никакого локального tty.
Так, добавление -t
опция к Вашей команде SSH - все, что необходимо сделать для предоставления Vim оконечное устройство, которое это может использовать:
ssh -t me@myserver vim