我为一些用户设置了以下内容。
用户在两台机器上都有帐户,他们手动从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/