我有两台机器。我通过 SSH 连接到其中一台。我想让我在一台机器上输入的任何内容都显示在另一台机器的屏幕上。我知道你可以用 GNU screen 命令来做到这一点。怎么做?
谢谢!
答案1
您可以使用屏幕的多用户功能来执行此操作。
假设您使用相同的用户名通过 ssh 登陆并连接...
1)启动 ssh 会话
ssh user@server
2)启动屏幕会话,-S 命名会话
screen -S shared
3)启用多用户。
Ctrl+ a+:
:multiuser on
Ctrl+ a+:
:acladd user2
4)现在您可以在服务器上连接
screen -x user2/shared
我在博客上详细描述了如何做到这一点
http://blog.bodhizazen.com/linux/shared-ssh-sessions-update-for-jaunty-ubuntu-904/
该博客中的某些信息有点过时,但是它涵盖了有关安全性和多个用户的其他问题。应该可以帮助您入门。
答案2
在您的第一个会话中,启动屏幕:
screen
然后,在同一台机器上(本地或通过 ssh)连接到现有屏幕。为此,您可以执行以下操作
screen -x <session name>
其中“会话名称”是您上面启动的屏幕的名称。要找到它,您可以列出所有正在运行的屏幕,如下所示:
screen -ls
然后您可以复制您想要附加的屏幕的名称。
或者,如果您只运行一个屏幕会话,您只需键入screen -x
然后按 Tab 键即可自动完成。
您可能还想了解一个名为“byobu”的程序,它就像一个花哨的屏幕前端。您可以保持多个屏幕打开,有点像标签,并且它有更容易记住的快捷方式,用于连接、分离、在屏幕之间切换等。
byobu 的默认设置是附加到已在运行的会话(如果有),这可让您轻松完成操作。您只需byobu
在每个终端中输入即可。
答案3
当我第一次在多用户模式下使用“屏幕”时出现以下错误。
"Must run suid root for multiuser support."
可以通过运行以下命令轻松修复:
sudo chmod u+s /usr/bin/screen
答案4
我花了一些时间,但我找到了:屏幕 4.06有一个错误。如果你想通过这样的共享屏幕会话发送命令,它会失败:
screen -S shared_session_name -X stuff "command \n"
屏幕出现错误:
Cannot opendir /run/screen/S-$USER: Permissions denied
更新至版本后屏幕 4.09有用。