PuTTY在会话期间插入随机字符


26

我最近开始在远程服务器上租用空间,以便可以处理项目。我发现在Windows机器上访问它的一种相对轻松的方法是通过PuTTY。但是,在使用它时,总是有一件事让我感到讨厌:似乎没有理由有时在光标处插入随机字符。

在大多数情况下,它只是一个波浪线,但很少吐出看起来像是一些转义序列([[^ 8之类的)。无论我是在打字还是在距键盘20英尺的地方,它只会在我专注于窗口时发生。如果放置足够长的时间,它将以随机的间隔吐波浪线(平均大约1分钟)。

最后,在运行诸如nano或mysql接口之类的程序时,这种行为似乎是不一致的:在nano中,将插入标记(ctrl- ^)而不是插入波浪号;在mysql中,行将变得不可编辑。

我的问题是:还有其他人在PuTTY中经历过这种行为吗?如果是这样,可以采取什么措施来防止/纠正此行为?


如果您在主机上打开几个小时的随机程序(如记事本),计算机是否也可以执行此操作?
cutrightjm 2014年

@ekaj不,仅在腻子中。以及基于PuTTY的程序,例如MobaXterm(我下载了便携式版本进行测试)编辑:仅在Moba的SSH会话期间
Zachary Polikarpus,2014年

嗯 您确定它不是很接近周期性,例如在腻子完全闲置时始终保持55-65秒吗?如果是这样,则可能是服务器端或腻子中的“保持活动”活动。看看在腻子帮助中搜索“活着”时发现的东西。也许这些会有所帮助:superuser.com/questions/94436/…unix.stackexchange.com/questions/6105/…– mgkrebbs 2014
8:54

@mgkrebbs有时似乎是周期性的,但偶尔约5至6分钟不会发生,然后立即恢复为周期性。关于保持活动的想法,如果是这种情况,它似乎与客户端隔离,因为如果我从本地终端中的linux机器启动ssh会话,一切都会很好。当我问这个问题时,我确实看到了第一个链接,并尝试将终端类型更改为“ linux”,但这似乎没有什么明显的不同。
Zachary Polikarpus,2014年

我也一直遇到这个问题。当我使用Putty,Kitty甚至MobaXterm时,它就会显示出来。
Attilah

Answers:


30

我在PuTTY上遇到了同样的问题,发现这是由我称为“咖啡因”的应用程序引起的,该应用程序每分钟有效地按F13键以阻止屏幕保护程序被激活(组策略阻止我更改屏幕保护程序的超时时间。我的机器)。禁用应用程序解决了我的问题。


2
当时我确实安装了咖啡因!现在一切都变得有意义了,谢谢布鲁斯!
Zachary Polikarpus 2014年

3
h,我应该怀疑的。杀死咖啡因可以解决问题。PS:请参阅下面的解决方案,让咖啡因和腻子协同工作
shreyansp

我有一个做同样的标牌应用程序。一些[28〜]出现在终端上。
好奇心

12

如果您希望运行Putty和Caffeine,请按照以下步骤操作:

  1. 停止咖啡因
  2. 检查Caffeine readme.txt以获取模拟的默认密钥-我的是 F15
  3. 通过Putty登录到远程终端
  4. 启动咖啡因(提示:以较短的间隔(例如3秒)启动咖啡因)。
  5. 重点关注油灰会议。
  6. 在您的bash命令提示符下,按Ctrl+V(这是获取密钥的特殊代码所必需的。例如,尝试Ctrl+V之后按F12
  7. 等待咖啡因模拟密钥
  8. 键代码将在命令行上被显示(例如F15^[[28~,其中^[是逃逸)。停止咖啡因
  9. 现在,您可以将此键绑定为空白,以便当Caffeine模拟它时,它不会键入 ~
    • 编辑~/.inputrc(如果不存在则创建一个新文件)
    • 添加线 "\e[28~":""
  10. 开始咖啡因
  11. 重新启动终端会话
    • ~该Linux服务器上使用Putty终端时,应该不再有随机性

+1。我在下面扩展了这个答案(并解释了为什么这不是我的最佳答案):)
Petru Zaharia

7

我发现shreyansp的解决方案是最令人满意(但不是很令人满意)的解决方案:)
这是我尝试改进的解决方案(当然是YMMV)。希望这对那些寻求解决方案的人有用:)

我的解决方案的行为如下:

  • 咖啡因向Windows发送适当的虚拟密钥代码,该代码:
    • 防止Windows进入睡眠或空闲状态
    • 否则,无论是单独还是组合使用,都不会在Windows上产生任何副作用(没有Ctrl,Shift,Alt,Alt-Gr,Win,F1-F5,F10等)。
    • 要么不发送到Putty要么被Putty忽略

TL; DR:我的解决方案在第2步和第3步(见下文)之间应用了-key:0E咖啡因参数:
退出咖啡因并使用:(
caffeine.exe 5 -key:0E为了方便测试)重新启动
caffeine.exe 50 -key:0E(用于强制性屏幕保护,设置为1分钟)

  • read在远程主机上启动程序,并观察每5或50秒如何没有收到击键。
  • 退出readCtrl+C

Shreyansp提出了一种解决方案,其中将在步骤5和步骤10之间进行修复(请参见下文)。
副作用(在我的配置中)是,腻子的每次击键都从咖啡因转发到远程主机:

  • 它触发了
    我通常想要的“在按键上重置滚动条”(在腻子/窗口页面上设置),但是仅当我(人类)按下该键但不定期地通过咖啡因来按下时):
  • readline / bash的翻译版本(从'"\e[28~"''""'(空白键?)导致远程会话交互挂起几秒钟

为了轻松测试上述内容,请退出咖啡因,并以5秒的间隔和虚拟键代码07重新启动它:
caffeine.exe 5 -key:07

  • read在远程主机上启动程序,并观察如何每5或50秒接收一次按键。
  • 退出readCtrl+C

据我了解,按键“管道”是:

  1. 咖啡因向Windows发送虚拟密钥代码
  2. Windows将虚拟键代码发送给Putty
  3. Putty根据以下会话设置进行一些“翻译” /“映射”:
    • 终奌站/*
    • 窗口/*
  4. Putty将“翻译的” /“映射的”密钥代码发送到远程主机
  5. 在远程主机上,“终端”程序(例如:$TERM=xtermvt100vt102vt220,等等)从“线路协议”成键码转换。
  6. readline库基于以下内容进行一些翻译/映射 ~/.inputrc
  7. readline将密钥发送到bash
  8. bash会基于以下内容进行翻译/映射~/.bashrc(基于内置的bind命令)
  9. bash或readline(不确定是哪一个)将翻译后的密钥发送给nano(我的文本编辑器)
  10. 通过添加screen程序,该管道可以变得更长(其中包括$TERM=screen用于步骤5 的程序,并在步骤6至10中再次循环返回。)

注意:进入第4步后,要精确控制“翻译” /“映射”的不同层变得非常困难。我建议您尽量避免这样做。


背景:在使用pfsense 2.3.3-RELEASE-p1(基于FreeBSD 10.3-RELEASE)之前,
我使用caffeine.exe -key:07了多年。
然后,caffeine.exe -key:07在另一侧以^[[28~...的形式接收,似乎被映射到Ctrl+^Nano中的(Set Mark)。
这很烦人(想像有人在记事本中移动文本插入符时按住Shift键)。

以前,我做了很多定制的腻子设置,~/.tcshrc~/.inputrc~/.bashrc~/.nanorc~/.screenrc得到什么,我认为基本的功能(BackspaceDeleteHomeEndPgUpPgDownCtrl+LeftCtrl+Right,小键盘0-9,小键盘./*-+)的bash /纳米/屏幕之间持续的工作。

一旦发现了这个caffeine.exe -key:07“ bug”,我就不想再追溯一遍了:)


经过测试:
Windows 8.1 64位企业版(6.3.9600)/ 腻子 0.66 / pfsense 2.3.3-RELEASE-p1(基于FreeBSD 10.3-RELEASE)/ bash 4.4.12版本/ nano 2.7.3 / 屏幕 4.04。 00


参考文献:


1

这确实看起来像一个转义序列或控制字符,这可以解释为什么您在其他程序(如记事本)中看不到它。

我不太确定必须按下哪个键才能获得此输出,但是我会花一点时间尝试找出答案。您可以命名显示的其他任何顺序吗?mysql和nano的行为可能只是对似乎已输入的转义序列的另一种解释。

最后,问题是导致这些关键输入的原因。您是否有机会使用便携式计算机,例如使用某些专有软件自动控制背光灯?我已经看到一些奇怪的预装软件实际上是在模拟按键,而不是使用API​​。您可能想对自己使用诸如inputlog之类的东西。


此后,我更改了操作系统,首先将双Win-8.1和Ubuntu更改为仅Ubuntu,然后更改为Mint,最后更改为Arch。我没有遇到过任何类似的问题,这使我相信该问题与Windows与PuTTY交互的方式无关。至于按键输入的原因,如果您的建议是这种情况,我不会感到惊讶,但是我没有使用或注意到任何类型的自动硬件控制。如果我仍然有那些日志,我会发布它们。编辑:如果有人遇到此问题,我鼓励您发布此信息。
2014年

另请参阅Gilles在“ 为什么腻子将〜插入我的Fedora bash外壳 ”中的答案,它很好地解释了为什么~在实际\e[3~发送类似消息时可能只看到(听到蜂鸣声)。
2014年

(顺便说一句:你可能想链接到这个职位,因为起初我想看到一个~不是指示转义序列。)
阿尔扬

1

我在命令行上使用-key:07选项来启动caffiene。似乎可以阻止腻子问题。

只需将其放在蝙蝠文件中

caffeine.exe -key:07


我也使用'caffiene.exe -key:07',因为它多年来一直为我服务。但是,由于连接到我的pfSense(基于FreeBSD),因此在另一侧以^ [[28〜...]的形式接收,这似乎已映射到Nano中的Ctrl + ^(设置标记)。这很烦人(想象您在记事本中四处移动文本插入符号时按住并按住Shift键)。:)我将在咖啡因方面找到另一个密钥,或者在FreeBSD方面进行自定义映射。(请参阅defs @ msdn.microsoft.com / en
us/library/

切换到caffeine.exe -key:0E(请参阅下面的答案)。似乎可以在Windows(8.1 64位)上很好地工作,而Putty高兴地忽略了它:)
Petru Zaharia,2015年

0

思科论坛上的某人建议更改控制台速度参数以解决此问题。

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

您肯定已经尝试了Putty中控制台速度的所有变化,如1中所述

注意:如果将波特率设置为与默认速率不同,则CLI上会出现奇数字符。检查表1以设置不同Confreg值的波特率。


1
控制台速度用于串行连接。他指的是SSH连接。虽然SSH确实具有“ Terminal Speed”设置,但我从未真正看到这会导致问题。
Jared 2014年

0

我也遇到了同样的问题,发现caffeine.exe确实是问题所在。起初我以为这不是caffeine.exe引起的,因为我在旧笔记本电脑上使用了2年以上。我尝试改为更改caffeine.exe -useshift,但发送了^ C。找到了另一个程序Mouse Jiggler,它使屏幕保护程序远离,但不再在我的Putty会话中发送任何转义序列。


0

更好的解决方案是在油灰会话中配置设置,以使Caffine不会干扰它。

在“终端键盘”下的“腻子”中,选择“ SCO”选项。在“终端钟”下的“腻子”中,将操作更改为“无”(以关闭提示音)。

Caffine仍然会这样做,不会打扰您的腻子会议。(我在腻子会议期间不使用Fn键,所以我不知道如果您想使用Fn键会发生什么情况)。


0

2017-09-20:通过在登录时触发的任务计划程序中使用«caffeine.exe -useshift -noicon»启动咖啡因,解决了字符注入问题。没有图标,在薄荷/重击会话中不再注入任何字符。太烦人了。谢谢大家的提示。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.