使用伪 tty 与 ssh 和控制主机会导致警告

使用伪 tty 与 ssh 和控制主机会导致警告

我正在为我的一些用户设置以下内容。

  • 机器 A,运行 OpenSSH_6.6.1p1、OpenSSL 1.0.1e-fips
  • 机器 B,运行 OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8、OpenSSL 1.0.1f
  • 两台服务器都是 Linux,我负责管理后者。

用户在两台机器上都有账户,他们手动从 B ssh 到 A,例如通过ssh A在 A 上输入并执行操作。他们的~/.ssh/config样子如下:

Host *
ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%

在 B 上运行其他程序时,它们还会(间接地)运行命令,例如ssh -tt A xxx(其中xxx是一些复杂的东西),因为在 B 上执行任何操作时,它都需要找到一些需要以这种方式找到的东西。由于控制主控,它们不会一直被密码请求所困扰(机器 A 不受我的控制,不接受基于密钥的登录)。请注意,xxx如果我不使用,调用一些将无法工作的代码-tt。您可能会声称这样的代码有问题,我可能同意,但强制使用 tty 会让它开心。

一切运行正常,但是他们从 B 到 A 打开的手动连接却充满了消息(实际上无法使用):

process_mux_new_session: tcgetattr: Inappropriate ioctl for device

这似乎与https://stackoverflow.com/questions/1495776/https://bugzilla.mindrot.org/show_bug.cgi?id=1686

有没有什么办法可以让这些消息静音,以使第一个连接有用,而不需要打开另一个连接?

答案1

将@MarkWagner 评论提升为答案状态。

根据错误中的补丁,您需要将其添加-q到 ssh 调用之一(我不确定是哪一个)。– 5 月 19 日 19:42

根据一些快速测试,似乎从 B 到 A 打开的手动连接是需要-q

答案2

我会寻找最大会话数在服务器-A上

grep MaxSessions /etc/ssh/sshd_config

并在客户端上 ~/.ssh/config控制持续超时

Host *
ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
ControlPersist 10m

您可能还更喜欢 ControlPath ~/tmp/ssh_mux_%h_%p_%r 来防止用户覆盖彼此的文件

此外,控制路径使用主机名“%h”,该主机名可能会因调用而变化。

另一个可能的解决方案是调整终端设置

ssh server_A TERM=tn3270 /opt/wierd/complex_command.cobol

或者甚至在屏幕下运行 https://www.youtube.com/watch?v=hB6Y72DK8mc https://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/

相关内容