PuTTY вставляет случайные символы во время сеанса

26

Недавно я начал арендовать место на удаленном сервере, чтобы я мог работать над проектом. Я обнаружил, что относительно безболезненный способ получить доступ к нему на Windows-машине через PuTTY. Тем не менее, есть одна вещь, которая всегда раздражала меня при ее использовании: по-видимому, без причины случайные символы иногда вставляются в курсор.

В большинстве случаев это всего лишь одна тильда, но редко она выплевывает то, что похоже на некоторую escape-последовательность ([[^ 8 или подобное). Это произойдет только тогда, когда я сфокусирован на окне, печатаю ли я или на расстоянии 20 футов от клавиатуры. Если оставить его достаточно долго, он будет плевать тильды через случайные интервалы (в среднем около 1 минуты).

Наконец, это поведение кажется несовместимым при запуске таких программ, как nano или интерфейс mysql: в nano вместо вставки тильд он будет устанавливать метки (ctrl- ^); в mysql строки станут недоступны для редактирования.

У меня такой вопрос: кто-нибудь еще испытывал подобное поведение в PuTTY? И если так, что можно сделать, чтобы предотвратить / исправить это поведение?

Захари Поликарпус
источник
Ваш компьютер также делает это, если вы оставляете случайной программу на своем хосте на несколько часов, например, блокнот?
cutrightjm
@ekaj Нет, только в PuTTY. И совершенно очевидно, что программы на основе PuTTY, такие как MobaXterm (я скачал для тестирования портативную версию), РЕДАКТИРОВАТЬ: только во время сеанса SSH в Мобе
Захария Поликарпуса
Хм. Вы уверены, что это не очень близко к периодическому, как всегда 55-65 секунд, пока шпаклевка полностью простаивает? Если это так, это может быть «поддержание активности», либо со стороны сервера, либо, возможно, замазка. Взгляните на вещи, найденные при поиске «живой» в справке по замазке Может быть, они будут полезны: superuser.com/questions/94436/… unix.stackexchange.com/questions/6105/…
mgkrebbs
@mgkrebbs Иногда это кажется периодическим, но иногда это не происходит в течение приблизительно 5-6 минут, затем вернитесь к кажущемуся периодическому. Что касается идеи поддержания активности, то в этом случае она кажется изолированной на стороне клиента, потому что, если я запускаю ssh-сессию с машины linux в нативном терминале, все хорошо. Я увидел эту первую ссылку, когда задавал вопрос, и попытался изменить тип терминала на «linux», но это, похоже, не имело заметного значения.
Захария Поликарпуса
Я тоже столкнулся с этой проблемой. Это появляется, когда я использую Putty, Kitty и даже MobaXterm.
Аттила

Ответы:

30

У меня была та же проблема с PuTTY, и я обнаружил, что это вызвано приложением, которое я назвал «кофеин», которое эффективно нажимает клавишу F13 каждую минуту, чтобы остановить активацию заставки (групповые политики не позволяют мне изменить время ожидания заставки на моя машина). Отключение приложения решило проблему.

Брюс
источник
2
У меня действительно был установлен кофеин в то время! Теперь все имеет смысл ... Спасибо, Брюс!
Захария Поликарпуса
3
Я должен был заподозрить это. Убийство Кофеин сделал свое дело. PS: Смотрите мое решение ниже, чтобы кофеин и замазка работали вместе
shreyansp
У меня было приложение для вывесок, которое делало то же самое. Некоторые [28 ~ появились в Терминале.
Любопытный разум
12

Если вы предпочитаете использовать замазку и кофеин, выполните следующие действия:

  1. Стоп Кофеин
  2. Проверьте Cafeine readme.txt для имитируемого ключа по умолчанию - мой был F15
  3. Войдите в свой удаленный терминал через Putty
  4. Начните кофеин (Совет: начинайте кофеин с короткого интервала, например, 3 секунды).
  5. Сделайте акцент на замазке.
  6. На вашем Баш командной строке нажмите Ctrl+V(Это необходимо , чтобы получить специальный код для ключа. , Например , попытайтесь Ctrl+Vзатем F12)
  7. Подождите, пока кофеин имитирует ключ
  8. Ключевой код будет отображаться в командной строке (например , F15есть ^[[28~, где ^[есть побег). Стоп Кофеин
  9. Теперь вы можете связать этот ключ с пустым, чтобы, когда кофеин имитировал его, он не печатал ~
    • редактировать ~/.inputrc(создать новый файл, если он не существует)
    • добавить строку "\e[28~":""
  10. Начать кофеин
  11. Перезапустите сеанс терминала
    • ~При использовании терминала Putty с этим сервером Linux больше не должно быть никаких случайностей.
shreyansp
источник
+1. Я подробно остановился на этом ответе ниже (с объяснением того, почему этот вопрос не был для меня оптимальным) :)
Петру Захария,
7

Я нашел решение shreyansp наиболее (но не вполне) удовлетворительным :)
Вот моя попытка улучшить его (конечно же, YMMV). Надеюсь, что это может быть полезно для тех, кто ищет решение :)

Мое решение ведет себя следующим образом:

  • кофеин отправляет в Windows соответствующий код виртуального ключа, который:
    • предотвращает переход Windows в режим сна или в режим ожидания
    • в противном случае не генерирует никаких побочных эффектов в Windows ни в одиночку, ни в комбинации (без Ctrl, Shift, Alt, Alt-Gr, Win, F1-F5, F10 и т. д.)
    • либо не отправляется в Putty, либо игнорируется

TL; DR: мое решение применяется между шагами 2 и 3 (см. Ниже) с параметром -key:0Eкофеина:
выйдите из кофеина и перезапустите его с помощью:
caffeine.exe 5 -key:0E(для простого тестирования)
caffeine.exe 50 -key:0E(для обязательной заставки, установленной на 1 минуту)

  • Запустите readпрограмму на удаленном хосте и следите за тем, как не принимаются нажатия клавиш каждые 5 или 50 секунд.
  • Выход readсCtrl+C

Шреянсп предложил решение, в котором исправление будет применено между шагами 5 и 10 (см. Ниже).
Побочным эффектом этого (на моем конфиге) было то, что при каждом нажатии клавиши эта замазка пересылалась с кофеина на удаленный хост:

  • он вызвал «Сбросить полосу прокрутки при нажатии клавиш» (настройка на странице «Замазка / окно»),
    которую я обычно хотел бы, но только когда я (человек) нажимаю клавишу, но не регулярно кофеином :)
  • переведенная версия readline / bash (from '"\e[28~"'to '""'(пустой ключ?) привела к зависанию взаимодействия удаленного сеанса на несколько секунд

Чтобы легко проверить вышеупомянутое, выйдите из Caffeine и перезапустите его с 5-секундным интервалом и кодом виртуального ключа 07:
caffeine.exe 5 -key:07

  • Запустите readпрограмму на удаленном хосте и наблюдайте, как нажатия клавиш принимаются каждые 5 или 50 секунд.
  • Выход readсCtrl+C

Клавиша «трубопровод», насколько я понимаю:

  1. Кофеин отправляет код виртуального ключа в Windows
  2. Windows отправляет этот код виртуального ключа в Putty
  3. Putty выполняет некоторые «переводы» / «отображения» на основе некоторых настроек сеанса в:
    • Терминал/*
    • Окно/*
  4. Putty отправляет «переведенный» / «сопоставленный» код ключа на удаленный хост
  5. На удаленном хосте, «терминал» программа (например: $TERM=xterm, vt100, vt102, vt220и т.д.) переводится из «протокола линии» в ключевые коды.
  6. библиотека readline делает несколько переводов / отображений на основе ~/.inputrc
  7. readline отправляет код ключа в bash
  8. bash делает некоторые переводы / отображения на основе ~/.bashrc(на основе встроенной команды bind)
  9. bash или readline (не уверен, какой именно) отправляет переведенный ключевой код в nano (мой текстовый редактор)
  10. Этот конвейер может стать еще длиннее, если добавить screenпрограмму (которая включает в себя $TERM=screenэтап 5 и снова выполнить цикл на этапах 6–10).

Примечание. После перехода к шагу 4. становится очень трудно точно контролировать различные уровни «переводов» / «отображений». Я бы порекомендовал избегать этого, если вы можете.


Предыстория:
я caffeine.exe -key:07годами пользовался, прежде чем иметь дело с pfsense 2.3.3-RELEASE-p1 (основан на FreeBSD 10.3-RELEASE).
Затем caffeine.exe -key:07был получен на другой стороне как ^[[28~... который, кажется, сопоставлен с Ctrl+^(Set Mark) в Nano.
Это было довольно неприятно (представьте, что кто-то нажимает и удерживает клавишу Shift, когда вы перемещаете текстовую рамку в Блокноте).

Раньше я делал многочисленные настройки в Putty Настройки, ~/.tcshrc, ~/.inputrc, ~/.bashrc, ~/.nanorc, ~/.screenrcчтобы получить то , что я считаю базовую функциональность ( Backspace, Delete, Home, End, PgUp, PgDown, Ctrl+Left, Ctrl+Right, Numpad 0-9, Numpad ./*-+) работает последовательно между Баш / нано / экран.

Как только я обнаружил эту caffeine.exe -key:07«ошибку», я не захотел повторять это снова :)


Протестировано на:
Windows 8.1 64-bit Enterprise (6.3.9600) / Putty 0.66 / pfsense 2.3.3-RELEASE-p1 (на основе FreeBSD 10.3-RELEASE) / bash 4.4.12-release / nano 2.7.3 / screen 4.04. 00


Ссылки:

Петру Захария
источник
1

Это действительно выглядит как escape-последовательность или управляющий символ, который может объяснить, почему вы не видите ее в других программах, таких как блокнот.

Я не совсем уверен, какие клавиши нужно нажимать, чтобы получить этот вывод, но я немного поиграюсь и попытаюсь выяснить. Можете ли вы назвать любую другую показанную последовательность? Поведение mysql и nano может быть просто еще одной интерпретацией escape-последовательностей, которые, кажется, вводятся.

Наконец, вопрос в том, что вызывает эти ключевые входные данные. Вы случайно не используете ноутбук, который, например, автоматически управляет подсветкой с помощью какого-то проприетарного программного обеспечения? Я видел какое-то странное предустановленное программное обеспечение, которое эмулирует нажатия клавиш вместо использования API. Возможно, вы захотите использовать что-то вроде inputlog для себя.

Патрик Р.
источник
С тех пор я изменил операционные системы, сначала изменив мой двойной Win-8.1 и Ubuntu только на Ubuntu, затем на Mint и, наконец, на Arch. Я не сталкивался с подобными проблемами, и это заставляет меня думать, что проблема была изолирована от способа взаимодействия Windows с PuTTY. Что касается причины ключевых входных данных, я не удивлюсь, если вы предложите, но я не использовал и не заметил какого-либо автоматического управления оборудованием. Если бы у меня все еще были эти журналы, я бы опубликовал их. РЕДАКТИРОВАТЬ: Если кто-то еще испытывает это, я призываю вас опубликовать эту информацию.
Захария Поликарпуса
См. Также ответ Жиля в разделе « Почему Putty вставляет ~ в мою оболочку Fedora bash» , в котором хорошо объясняется, почему можно увидеть ~(и услышать биб) только когда действительно \e[3~отправлено что-то подобное .
Арджан
(В качестве отступления: вы, возможно, захотите дать ссылку на этот пост, так как сначала я подумал, что просмотр одного не~ будет указывать на escape-последовательность.)
Arjan
1

Я использую опцию -key: 07 в командной строке, чтобы запустить кофеин. Кажется, чтобы решить проблему Putty.

Просто поместите это в файл летучей мыши

caffeine.exe -ключ: 07

WorsleyBaz
источник
Я использую 'caffiene.exe -key: 07', и он хорошо мне служил годами. Однако после подключения к моему pfSense (на основе FreeBSD) он получен с другой стороны как ^ [[28 ~ ..., который, по-видимому, сопоставлен с Ctrl + ^ (Set Mark) в Nano. Это довольно раздражает (представьте, что кто-то нажимает и удерживает клавишу Shift, когда вы перемещаете текстовую рамку в Блокноте). :) Я либо найду другой ключ на стороне кофеина, либо сделаю собственное отображение на стороне FreeBSD. (см. defs @ msdn.microsoft.com/en-us/library/windows/desktop/… )
Петру Захария,
Переключился на caffeine.exe -key:0E(см. Мой ответ ниже). Кажется, хорошо работает с Windows (8.1 64-разрядная версия), и Putty радостно игнорирует это :)
Petru Zaharia
0

Кто-то на форумах Cisco предлагает изменить параметр скорости консоли, чтобы решить эту проблему.

http://www.dslreports.com/forum/r27090677-HELP-Cisco-1800-garbled-output-in-putty

Вы определенно перепробовали все варианты скорости консоли в Putty, как упомянуто в 1 ?

Примечание. Если скорость передачи данных отличается от скорости по умолчанию, в CLI отображаются нечетные символы. Проверьте таблицу 1, чтобы установить скорость передачи для различных значений Confreg.

Montag451
источник
1
Консольные скорости для последовательных соединений. Он имеет в виду соединение SSH. Хотя у SSH есть настройка «Terminal Speed» ... Я никогда не видел, чтобы это вызывало проблему.
Джаред
0

У меня тоже была такая же проблема, и я обнаружил, что проблема действительно в caffeine.exe. Сначала я думал, что это не может быть вызвано caffeine.exe, потому что я использовал это в течение 2 лет на моем старом ноутбуке. Вместо этого я попытался изменить caffeine.exe -useshift, но это послало ^ C. Нашел другую программу, Mouse Jiggler, которая хранит экранную заставку, но больше не отправляет последовательности Escape в моих сессиях Putty.

user332804
источник
0

Лучшее решение - настроить параметры сеанса замазки, чтобы Caffine не мешал ему.

В Putty под Terminal Keyboard выберите опцию SCO. В Putty под Terminal Bell измените действие на None (чтобы отключить перезвон).

Кофеин все равно сделает это и не будет беспокоить вас. (Я не использую клавиши Fn во время сеанса замазки, поэтому я не знаю, что произойдет, если вы захотите использовать клавиши Fn).

TomH
источник
0

2017-09-20: Решена инъекция угля, запустив кофеин с помощью «caffeine.exe -useshift -noicon» в планировщике задач, который запускается при входе в систему. Нет иконки, больше не вводятся символы в моих сеансах mint / bash. Это было так сильно раздражает. Спасибо всем за ваши советы.

Марк Верро
источник