Использование псевдотерминала с ssh и control master приводит к предупреждению

Я настраиваю следующее для некоторых из моих пользователей.

  • Машина A, на которой работает OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips
  • Машина B, на которой работает OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8, OpenSSL 1.0.1f
  • Оба сервера Linux, и я администрирую последний.

Пользователи имеют учетные записи на обеих машинах, и они вручную SSH от B до A, например, набрав ssh 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

Есть ли способ заставить эти сообщения замолчать, чтобы сделать первое соединение полезным, без необходимости открывать другое?

2 ответа

Решение

Повышение @MarkWagner комментария к статусу ответа.

Основываясь на патче в баге, нужно добавить -q на один из вызовов SSH (я не уверен, что.) - 19 мая в 19:42

Основываясь на некоторых быстрых тестах, кажется, что ручное соединение, открытое от B до A, является тем, который нуждается в -q

Я бы посмотрел MaxSessions на сервере-A

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/

Другие вопросы по тегам