it-swarm-ru.tech

Как я могу запустить сеанс экрана командой ssh ​​на удаленном сервере с моего рабочего стола?

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

Итак, очевидное

ssh [email protected] screen "tail -f /var/log/messages"

(как пример) не работает, а дает

Must be connected to a terminal.

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

58
Thomas Vander Stichele

Попробуйте использовать опцию -t для ssh

ssh -t [email protected] screen "tail -f /var/log/messages"

От человека сш

 - t Форсировать псевдо-tty. Это может использоваться для выполнения программ на основе arbi - 
 Trary screen на удаленной машине, что может быть 
 Очень полезным, например, при реализации сервисов меню. Несколько опций -t 
 Принудительно распределяют tty, даже если ssh не имеет локального tty. 
79
Kjetil Joergensen

Ты можешь использовать:

ssh [email protected] screen -m -d "tail -f /var/log/messages"

Это запускает отдельный экран с командой, запущенной на нем.

   -m   causes screen  to  ignore  the  $STY  environment  variable.  With
        "screen  -m"  creation  of  a  new session is enforced, regardless
        whether screen is called from within  another  screen  session  or
        not.  This  flag has a special meaning in connection with the `-d'
        option:

   -d -m   Start screen in "detached" mode. This creates a new session but
           doesn't  attach  to  it.  This  is  useful  for  system startup
           scripts.
33
Alakdae

Поздний ответ, но это то, что я делаю, я делаю псевдоним (давайте назовем его t), который делает это:

ssh $MYSERVER -a -x -t screen -xRR -A -e^Zz -U -O

Это говорит ssh об отключении агента и переадресации X11, и говорит screen подключиться к запущенному сеансу, при необходимости запустить новый, использовать ^Z как команда прорыва, используйте UTF-8 и будьте внимательны с терминалом.

Все это означает, что я могу открыть терминал, введите t, и он откроет мой экранный сеанс на $ MYSERVER. Затем я могу открыть другой терминал, сделать то же самое, и я получаю другое окно для того же сеанса.

Очень приятно иметь несколько окон терминала в одном сеансе экрана, поэтому вы можете одновременно просматривать две вкладки экрана.

8
w00t

Поместив следующее в файл ~/.bashrc на моем сервере, он запускает сеанс экрана при первом входе на сервер или, если он уже запущен, повторно подключает меня к этому сеансу.

Я нахожу это очень удобным:

if [ -n "$SSH_CONNECTION" ] && [ -z "$SCREEN_EXIST" ]; then
    export SCREEN_EXIST=1
    screen -DRi
fi
4
Brent