如何从我的桌面通过远程服务器上的 ssh 命令启动屏幕会话?

Tho*_*ele 63 ssh terminal gnu-screen tty

我希望能够通过桌面上的单个 ssh 命令在远程服务器上启动屏幕会话。但是, screen 似乎需要一个终端,通过 ssh 运行命令时该终端不可用。

所以显而易见

ssh root@my.machine screen "tail -f /var/log/messages"
Run Code Online (Sandbox Code Playgroud)

(作为示例)不起作用,并给出

Must be connected to a terminal.
Run Code Online (Sandbox Code Playgroud)

我希望 ssh 在屏幕下启动命令,以便我稍后登录并附加到我将手动启动的屏幕会话。

Kje*_*sen 87

尝试使用 -t 选项进行 ssh

ssh -t root@my.machine screen "tail -f /var/log/messages"
Run Code Online (Sandbox Code Playgroud)

来自 ssh

-t 强制伪 tty 分配。这可用于执行任意
        远程机器上的基于屏幕的程序,可以是
        非常有用,例如,在实现菜单服务时。多个 -t
        选项强制 tty 分配,即使 ssh 没有本地 tty。


Ala*_*dae 36

您可以使用:

ssh root@host screen -m -d "tail -f /var/log/messages"
Run Code Online (Sandbox Code Playgroud)

这将启动一个分离的屏幕,并在其上运行一个命令。

   -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.
Run Code Online (Sandbox Code Playgroud)


w00*_*00t 8

迟到的答案,但这就是我所做的,我创建了一个别名(我们称之为 t)来执行此操作:

ssh $MYSERVER -a -x -t screen -xRR -A -e^Zz -U -O
Run Code Online (Sandbox Code Playgroud)

这告诉ssh禁用代理和 X11 转发,并告诉screen附加到正在运行的会话,如果需要,启动一个新会话,^Z用作 breakout 命令,使用 UTF-8 并注意终端。

所有这一切意味着我可以打开一个终端,输入t它就会在 $MYSERVER 上打开我的屏幕会话。然后我可以打开另一个终端,做同样的事情,我得到另一个窗口到同一个会话。

在同一个屏幕会话中有多个终端窗口真的很棒,这样您就可以同时查看两个屏幕选项卡。