如何暂停ssh?

我想这个问题与如何配置dbus以允许ssh-user挂起服务器几乎相同? ; 除了我想更好地制定它。

假设我有一个运行不间断的Ubuntu服务器,我们称之为MyServer 。 那么我们说,我在MyServer的同一个本地网络上有另一台PC,我们称之为MyLocalPC

然后MyLocalPC保持暂停状态,除非它通过MyServer wakeonlan打开。 这部分过程非常适合我:我可以通过sshMyServer ,在MyServer ssh提示符下我可以发出wakeonlan ,并且MyLocalPC唤醒 – 很棒。

然而,然而,一旦我完成MyLocalPC工作,我想再次暂停它。 问题如下 – 如果我首先通过ssh ssh进入MyLocalPC ,我可以轻松暂停机器:

 [MyServer]$ ssh MyLocalPC [MyLocalPC]$ dbus-send --session --dest=org.freedesktop.PowerManagement --type=method_call --print-reply --reply-timeout=2000 /org/freedesktop/PowerManagement org.freedesktop.PowerManagement.Suspend 

这将暂停MyLocalPC – 但也将阻止正确退出ssh ,最终sshMyServer最终冻结。 我试图变得棘手并发出类似这样的事情:

 [MyServer]$ ssh MyLocalPC "dbus-send --session --dest=org.freedesktop.PowerManagement --type=method_call --print-reply --reply-timeout=2000 /org/freedesktop/PowerManagement org.freedesktop.PowerManagement.Suspend" Failed to open connection to "session" message bus: /bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed. 

然后我读到某处应该定义DISPLAY变量 – 但是也失败了:

 [MyServer]$ ssh MyLocalPC "DISPLAY=:0 dbus-send --session --dest=org.freedesktop.PowerManagement --type=method_call --print-reply --reply-timeout=2000 /org/freedesktop/PowerManagement org.freedesktop.PowerManagement.Suspend" Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.PowerManagement was not provided by any .service files 

那么有没有人知道如何在没有与MyServer冻结的ssh连接的情况下向MyLocalPC发出暂停?

只需输入~& (这是三次击键:输入,曲线,和号),ssh将进入后台,并最终自行超时。 如果您想在这种情况下放弃交互式会话,那就太好了。

或者,或者,将它放入MyLocalPC上的shell脚本中,并以一种背景连接的方式连接:

 ssh -f MyLocalPC go-to-sleep 

您需要使用ssh -Y启用X11转发。 或者, at now + 2 minutes使用at now + 2 minutes只运行一次命令(有关更多信息,请参阅man at )。

对我来说最简单的是使用at命令:

 echo 'pm-suspend' | sudo at now + 2 minutes 

然后断开与SSH会话的连接。

将来设置一个cron作业2分钟并断开连接

当它锁定时我如何突破ssh? 有许多有效的解决方案。 有人提到过一个人; 我在我的系统上设置了一个保持活动超时 ,通过在~/.ssh/config添加以下内容来自动挂起挂起的SSH会话:

 Host * ServerAliveInterval 5 ServerAliveCountMax 4 

暂停远程计算机后也可以工作。