Назад | Перейти на главную страницу

Использование псевдо-tty с ssh и управляющим мастером приводит к предупреждению

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

У пользователей есть учетные записи на обеих машинах, и они вручную ssh от B до 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 (я не уверен, какой именно) - 19 мая в 19:42

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

Я бы поискал 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/