相关疑难解决方法(0)

获取 ssh 转发信号

我希望能够通过 ssh 发送信号(SIGINT 是最重要的)。

这个命令:

ssh server "sleep 1000;echo f" > foo
Run Code Online (Sandbox Code Playgroud)

将在服务器上开始睡眠,并在 1000 秒后将 'f\n' 放在我本地机器上的文件 foo 中。如果我按 CTRL-C(即向 ssh 发送 SIGINT),它将终止 ssh,但不会终止远程服务器上的 sleep。我希望它杀死远程服务器上的睡眠。

所以我试过:

ssh server -t "sleep 1000;echo f" > foo
Run Code Online (Sandbox Code Playgroud)

但如果 stdin 不是终端,我会收到此错误:

Pseudo-terminal will not be allocated because stdin is not a terminal.
Run Code Online (Sandbox Code Playgroud)

然后 SIGINT 仍然没有转发。

所以我试过:

ssh server -t -t "sleep 1000;echo f" > output
Run Code Online (Sandbox Code Playgroud)

但是 foo 中的输出不是 'f\n' 而是 'f\r\n' 这在我的情况下是灾难性的(因为我的输出是二进制数据)。

在上面我使用“sleep 1000;echo f”,但实际上它是由用户提供的,因此它可以包含任何内容。然而,如果我们可以让它适用于“sleep 1000;echo f”,我们很可能让它适用于所有现实情况。

我真的不关心在另一端获得伪终端,但我一直无法找到任何其他方式让 ssh 转发我的 SIGINT。

还有其他方法吗?

编辑:

用户可以给出从 …

ssh remote signals tty

24
推荐指数
1
解决办法
1万
查看次数

如何在一定时间后终止交互式 ssh 会话

在我的/etc/ssh/sshd_config文件中,我设置了以下参数:

ClientAliveInterval 10
ClientAliveCountMax 3
Run Code Online (Sandbox Code Playgroud)

现在,我从主机ssh对我的服务器(我对/etc/ssh/sshd_config)文件进行了更改。之后我ssh通过运行以下命令重新启动服务:

/etc/init.d/sshd reload
Run Code Online (Sandbox Code Playgroud)

我预计ssh连接会在 30 秒后断开,但现在它已经持续了近一个小时。

有人可以让我知道这里出了什么问题吗?

我使用的是 OpenSSH 版本 6.1。

linux ssh sshd

3
推荐指数
1
解决办法
6551
查看次数

SSH 连接如何变为非活动状态?

我已经设置了一个 SSH 连接来在远程服务器上运行一个程序。该程序每 10 秒在终端上打印一次调试信息。如果我将 SSH 窗口打开很长时间(比如 10 小时),SSH 连接是否会变为非活动状态?如何在 SSH 会话中定义活动?我应该每 x 秒输入/运行一次命令以保持会话活动吗?

ssh timeout

3
推荐指数
1
解决办法
2676
查看次数

标签 统计

ssh ×3

linux ×1

remote ×1

signals ×1

sshd ×1

timeout ×1

tty ×1