在后台运行 SSH 时 Shell 丢失按键

在后台运行 SSH 时 Shell 丢失按键

我在使用 SSH + Bash + Terminal.app 时遇到了一个奇怪的问题:当 SSH 在后台运行时,shell 似乎在大约 50% 的时间内随机丢失按键。

例如,如果我运行:

$ ssh -N my-tunnel &
$ # typing becomes lossy

然后输入“asdf”,只有字母“a”和“f”可能会出现(尽管这是随机的并且部分与打字速度相关;如果我全速打字,可能只会出现“f”)。

此问题仅影响外壳。例如,如果我运行ssh -N my-tunnel & cat,字符将按照 cat 的预期进行回显。一旦猫被杀死,按键就会丢失,我又回到了外壳。

其他注意事项:

  • 其他终端窗口不受影响
  • ssh 终止后 shell 立即恢复正常
  • 使用nohup ssh -N my-tunnel &不会改变任何东西

那么:这是怎么回事?有什么方法可以在不破坏终端的情况下在后台进行 ssh 操作吗?

答案1

您应该使用-nexcept 来-N防止 ssh 从终端读取数据。

答案2

这是正常行为。ssh当它仍然连接到终端时,不要在后台运行。如果您想在不再需要终端时将其置于后台(例如密码),请使用该-f选项而不是使用&

ssh -fN my-tunnel

相关内容