將偽 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有關
有什麼方法可以使這些消息靜音以使第一個連接有用而無需打開另一個連接?
將@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/