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

我为一些用户设置了以下内容。

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

用户在两台机器上都有帐户,他们手动从B到A,例如通过键入ssh A并在A上工作。他们的~/.ssh/config如下所示:

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

当在B上运行其他东西的时候,他们也(间接)运行命令如ssh -tt A xxx (其中xxx是一些复杂的东西),因为在B上做任何事情时,都需要find一些需要被发现的东西办法。 感谢控制大师,他们不会一直困扰着密码请求(机器A不在我的控制之下,不接受基于密钥的login)。 请注意, xxx调用一些代码,如果我不使用-tt-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

有什么办法可以使这些消息无声无息地让第一个连接有用吗?

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

基于bug的补丁,你需要添加-q到ssh invocations(我不知道是哪个)。 – 5月19日19:42

基于一些快速testing,似乎从B打开到A的手动连接是需要-q的手动连接

我会在服务器-A上寻找MaxSessions

 grep MaxSessions /etc/ssh/sshd_config 

和客户端〜/ .ssh / config ControlPersist超时

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

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

另外,控制path使用的主机名'%h'在调用时可能会有所不同。

另一个潜在的解决scheme可以find调整terminal设置

 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/