Ssh

將偽 tty 與 ssh 和控制主機一起使用會導致警告

  • May 22, 2017

我正在為我的一些使用者設置以下內容。

  • 機器 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 xxxxxx一些複雜的東西在哪裡)之類的命令,因為在 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有關

有什麼方法可以使這些消息靜音以使第一個連接有用而無需打開另一個連接?

將@MarkWagner 評論提升為回答狀態。

根據您需要添加-q到 ssh 呼叫之一的錯誤更新檔(我不確定是哪個。) – 5 月 19 日 19:42

根據一些快速測試,從 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 以防止使用者覆蓋彼此的文件

此外,控制路徑使用主機名“%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/

引用自:https://serverfault.com/questions/851186