Использование псевдотерминала с 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/