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

<p>я хочу иметь возможность запускать сеансы экрана на удаленных серверах с помощью одной команды ssh на моем рабочем столе. однако экран, похоже, нуждается в терминале, который недоступен при запуске команды через ssh.</p><p>итак, очевидное</p><pre><code>ssh root@my.machine screen "tail -f /var/log/messages" </code></pre><p>(как пример) не работает, а дает</p><pre><code>must be connected to a terminal. </code></pre><p>я хочу, чтобы ssh запускал команду под экраном, чтобы я мог войти позже и подключиться так же, как и к сеансу экрана, который я бы запустил вручную.</p>

<p>попробуйте использовать опцию -t для ssh</p><pre><code>ssh -t root@my.machine screen "tail -f /var/log/messages" </code></pre><p>от человека сш</p><pre> - t форсировать псевдо-tty. это может использоваться для выполнения программ на основе arbi - trary screen на удаленной машине, что может быть очень полезным, например, при реализации сервисов меню. несколько опций -t принудительно распределяют tty, даже если ssh не имеет локального tty. </pre>

<p>ты можешь использовать:</p><pre><code>ssh root@host screen -m -d "tail -f /var/log/messages" </code></pre><p>это запускает отдельный экран с командой, запущенной на нем.</p><pre><code> -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. 

поздний ответ, но это то, что я делаю, я делаю псевдоним (давайте назовем его t), который делает это:ssh $myserver -a -x -t screen -xrr -a -e^zz -u -o </code></pre><p>это говорит <code>ssh</code> об отключении агента и переадресации x11, и говорит <code>screen</code> подключиться к запущенному сеансу, при необходимости запустить новый, использовать <code>^z</code> как команда прорыва, используйте utf-8 и будьте внимательны с терминалом.</p><p>все это означает, что я могу открыть терминал, введите <code>t</code>, и он откроет мой экранный сеанс на $ myserver. затем я могу открыть другой терминал, сделать то же самое, и я получаю другое окно для того же сеанса.очень приятно иметь несколько окон терминала в одном сеансе экрана, поэтому вы можете одновременно просматривать две вкладки экрана.

поместив следующее в файл ~/.bashrc на моем сервере, он запускает сеанс экрана при первом входе на сервер или, если он уже запущен, повторно подключает меня к этому сеансу.я нахожу это очень удобным:if [ -n "$ssh\_connection" ] && [ -z "$screen\_exist" ]; then export screen\_exist=1 screen -dri fi </code></pre>