PuTTY chèn các ký tự ngẫu nhiên trong một phiên


26

Gần đây tôi đã bắt đầu thuê không gian trên một máy chủ từ xa để tôi có thể làm việc trong một dự án. Tôi thấy rằng một cách tương đối không đau để truy cập nó trên máy tính windows là thông qua PuTTY. Tuy nhiên, có một điều luôn làm tôi khó chịu khi sử dụng nó: dường như không có lý do nào các ký tự ngẫu nhiên đôi khi được chèn vào con trỏ.

Hầu hết thời gian nó chỉ là một dấu ngã đơn, nhưng hiếm khi nó phát ra thứ trông giống như một chuỗi thoát ([8 ^ hoặc tương tự). Nó sẽ chỉ xảy ra khi tôi tập trung vào cửa sổ, cho dù tôi đang gõ hoặc cách bàn phím 20 feet. Nếu để đủ lâu, nó sẽ nhổ những dấu ngã trong khoảng thời gian ngẫu nhiên (trung bình là khoảng 1 phút).

Cuối cùng, hành vi này dường như không nhất quán khi chạy các chương trình như nano hoặc giao diện mysql: trong nano, thay vì chèn dấu ngã, nó sẽ đặt dấu (ctrl- ^); trong mysql, các dòng sẽ trở nên không thể chỉnh sửa.

Câu hỏi của tôi là: Có ai khác trải nghiệm loại hành vi này trong PuTTY không? Và nếu vậy, những gì có thể được thực hiện để ngăn chặn / sửa chữa hành vi này?


Máy tính của bạn cũng làm điều này nếu bạn để mở một chương trình ngẫu nhiên trên máy chủ của bạn trong vài giờ, như notepad?
cutrightjm

@ekaj Không, chỉ trong PuTTY. Và các chương trình dựa trên PuTTY đáng tiếc như MobaXterm (Tôi đã tải xuống phiên bản di động để kiểm tra) EDIT: chỉ trong một phiên SSH trong Moba
Zachary Polikarpus

Hừm. Bạn có chắc là nó không gần với định kỳ, như mọi khi 55-65 giây trong khi putty hoàn toàn không hoạt động? Nếu đúng như vậy, nó có thể là một hoạt động "duy trì sự sống", từ cuối máy chủ hoặc có thể là putty. Có một cái nhìn vào những thứ được tìm thấy trong một tìm kiếm "sống" trong trợ giúp putty. Có lẽ những điều này sẽ hữu ích: superuser.com/questions/94436/ Ấn unix.stackexchange.com/questions/6105/ trộm
mgkrebbs

@mgkrebbs Đôi khi có vẻ như định kỳ, nhưng đôi khi nó sẽ không xảy ra trong khoảng 5 đến 6 phút, sau đó quay lại ngay có vẻ như định kỳ. Về ý tưởng duy trì, nếu đó là trường hợp, nó dường như bị cô lập với phía máy khách bởi vì nếu tôi bắt đầu một phiên ssh từ một máy linux trong thiết bị đầu cuối gốc, tất cả đều ổn. Tôi đã thấy liên kết đầu tiên khi tôi đặt câu hỏi và đã thử thay đổi loại thiết bị đầu cuối thành "linux", nhưng dường như điều đó không tạo ra bất kỳ sự khác biệt đáng chú ý nào.
Zachary Polikarpus

Tôi cũng đã trải qua vấn đề này. Nó xuất hiện khi tôi đang sử dụng Putty, Kitty và thậm chí cả MobaXterm.
Attilah

Câu trả lời:


30

Tôi gặp vấn đề tương tự với PuTTY và thấy rằng đó là do ứng dụng mà tôi gọi là "caffeine" gây ra, nhấn phím F13 mỗi phút để ngăn không cho trình bảo vệ màn hình được kích hoạt (chính sách nhóm ngăn tôi thay đổi thời gian chờ bảo vệ màn hình máy của tôi). Vô hiệu hóa ứng dụng giải quyết vấn đề cho tôi.


2
Tôi đã cài đặt caffeine tại thời điểm đó! Bây giờ tất cả đều có ý nghĩa ... Cảm ơn Bruce!
Zachary Polikarpus

3
Doh, tôi nên nghi ngờ điều đó. Giết Caffeine đã làm điều đó. Tái bút: Xem giải pháp của tôi dưới đây để Caffeine và Putty hoạt động cùng nhau
shreyansp

Tôi đã có một ứng dụng biển báo cũng làm như vậy. Một số [28 ~ xuất hiện trên Terminal.
Tâm trí tò mò

12

Nếu bạn muốn chạy Putty và Caffeine thì hãy làm theo các bước sau:

  1. Ngừng Caffeine
  2. Kiểm tra Caffeine readme.txt để biết khóa mặc định được mô phỏng - của tôi là F15
  3. Đăng nhập vào thiết bị đầu cuối từ xa của bạn thông qua Putty
  4. Bắt đầu Caffeine (Mẹo: bắt đầu Caffeine với khoảng thời gian ngắn, ví dụ 3 giây).
  5. Đưa phiên Putty vào trọng tâm.
  6. Trên dấu nhắc lệnh bash của bạn, nhấn Ctrl+V(Điều này là bắt buộc để lấy mã đặc biệt cho khóa. Ví dụ: thử Ctrl+Vtheo sau F12)
  7. Đợi Caffeine mô phỏng chìa khóa
  8. Các mã chủ chốt sẽ được hiển thị trên dòng lệnh (ví dụ như F15^[[28~, nơi ^[là thoát). Ngừng Caffeine
  9. Bây giờ bạn có thể liên kết khóa này để trống để khi Caffeine mô phỏng nó, nó sẽ không gõ ~
    • chỉnh sửa ~/.inputrc(tạo một tệp mới nếu nó không tồn tại)
    • thêm dòng "\e[28~":""
  10. Bắt đầu Caffeine
  11. Khởi động lại phiên cuối của bạn
    • Không nên ngẫu nhiên hơn ~khi sử dụng thiết bị đầu cuối Putty với máy chủ linux đó

+1. Tôi đã mở rộng câu trả lời dưới đây (với lời giải thích tại sao đây không phải là câu trả lời tối ưu cho tôi) :)
Petru Zaharia

7

Tôi thấy giải pháp của shreyansp là giải pháp thỏa đáng nhất (nhưng không hoàn toàn) :)
Đây là nỗ lực của tôi trong việc cải thiện điều đó (tất nhiên là YMMV). Hy vọng điều này có thể được sử dụng cho những người tìm kiếm một giải pháp :)

Giải pháp của tôi hành xử như sau:

  • caffeine gửi tới Windows một Mã khóa ảo phù hợp:
    • ngăn Windows đi ngủ hoặc không hoạt động
    • không tạo ra bất kỳ tác dụng phụ nào trên Windows, không đơn độc hay kết hợp (không Ctrl, Shift, Alt, Alt-Gr, Win, F1-F5, F10, v.v.)
    • hoặc không được gửi tới Putty hoặc bị Putty bỏ qua

TL; DR: Giải pháp của tôi được áp dụng giữa các bước 2 và 3 (xem bên dưới) với thông số -key:0Ecaffeine:
Thoát Caffeine và khởi chạy lại với:
caffeine.exe 5 -key:0E(để kiểm tra dễ dàng)
caffeine.exe 50 -key:0E(đối với trình bảo vệ màn hình bắt buộc được đặt ở 1 phút)

  • Khởi chạy readchương trình trên máy chủ từ xa và xem cách không nhận được tổ hợp phím nào sau mỗi 5 hoặc 50 giây.
  • Thoát readvớiCtrl+C

Shreyansp đã đề xuất một giải pháp trong đó cách khắc phục sẽ được áp dụng giữa các bước 5 và 10 (xem bên dưới).
Tác dụng phụ của điều đó (trên cấu hình của tôi) là, với mỗi lần nhấn phím mà putty được chuyển từ caffeine đến máy chủ từ xa:

  • nó đã kích hoạt 'Đặt lại thanh cuộn trên phím nhấn' (cài đặt trên trang Putty / Window)
    mà tôi thường muốn, nhưng chỉ khi tôi (con người) nhấn phím nhưng không thường xuyên bằng caffeine :)
  • phiên bản dịch readline / bash của nó (từ '"\e[28~"'sang '""'(phím trống?) khiến tương tác phiên từ xa bị treo trong vài giây

Để dễ dàng kiểm tra những điều trên, hãy thoát Caffeine và khởi chạy lại với khoảng thời gian 5 giây và Mã khóa ảo 07:
caffeine.exe 5 -key:07

  • Khởi chạy readchương trình trên máy chủ từ xa và xem cách nhận được tổ hợp phím sau mỗi 5 hoặc 50 giây.
  • Thoát readvớiCtrl+C

Tổ hợp phím 'đường ống', theo tôi hiểu:

  1. Caffeine gửi Mã khóa ảo cho Windows
  2. Windows sẽ gửi Mã khóa ảo đó cho Putty
  3. Putty thực hiện một số 'bản dịch' / 'ánh xạ' dựa trên một số cài đặt phiên trong:
    • Thiết bị đầu cuối/*
    • Cửa sổ / *
  4. Putty gửi mã khóa 'được dịch' / 'ánh xạ' đến máy chủ từ xa
  5. Trên máy chủ từ xa, chương trình 'terminal' (ví dụ: $TERM=xterm, vt100, vt102, vt220, vv) dịch từ 'dòng giao thức' vào mã chủ chốt.
  6. thư viện readline thực hiện một số bản dịch / ánh xạ dựa trên ~/.inputrc
  7. readline gửi Mã khóa để bash
  8. bash thực hiện một số bản dịch / ánh xạ dựa trên ~/.bashrc(dựa trên lệnh liên kết dựng sẵn)
  9. bash hoặc readline (không chắc chắn cái nào) gửi Mã khóa đã dịch sang nano (trình soạn thảo văn bản của tôi)
  10. Đường ống này có thể dài hơn nữa bằng cách thêm screenchương trình (bao gồm một $TERM=screenbước 5. và lặp lại ở bước 6. đến 10.)

Lưu ý: Một khi đã đến bước 4., việc kiểm soát chính xác các lớp khác nhau của 'bản dịch' / 'ánh xạ' trở nên rất khó khăn. Tôi khuyên bạn nên tránh điều đó nếu bạn có thể.


Bối cảnh:
Tôi đã sử dụng caffeine.exe -key:07trong nhiều năm trước khi phải đối phó với pfsense 2.3.3-RELEASE-p1 (dựa trên FreeBSD 10.3-RELEASE).
Sau đó, caffeine.exe -key:07đã được nhận ở phía bên kia là ^[[28~... có vẻ như được ánh xạ tới Ctrl+^(Set Mark) trong Nano.
Điều này khá khó chịu (hãy tưởng tượng ai đó nhấn và giữ phím Shift trong khi bạn di chuyển dấu mũ văn bản trong Notepad).

Trước đây, tôi đã làm rất nhiều các tùy chỉnh trong Putty Settings, ~/.tcshrc, ~/.inputrc, ~/.bashrc, ~/.nanorc, ~/.screenrcđể có được những gì tôi xem xét chức năng cơ bản ( Backspace, Delete, Home, End, PgUp, PgDown, Ctrl+Left, Ctrl+Right, Numpad 0-9, Numpad ./*-+) ngày làm việc liên tục giữa bash / nano / màn hình.

Khi tôi phát hiện ra caffeine.exe -key:07'lỗi' này, tôi không muốn tìm lại nó nữa :)


Đã thử nghiệm trên:
Windows 8.1 64-bit Enterprise (6.3.9600) / Putty 0.66 / pfsense 2.3.3-RELEASE-p1 (dựa trên FreeBSD 10.3-RELEASE) / bash 4.4.12-phát hành / nano 2.7.3 / màn hình 4.04. 00


Tài liệu tham khảo:


1

Điều này thực sự trông giống như một chuỗi thoát hoặc ký tự điều khiển, có thể giải thích tại sao bạn không thấy nó trong các chương trình khác như notepad.

Tôi không chắc chắn những phím nào phải được nhấn để có đầu ra này, nhưng tôi sẽ chơi xung quanh một chút và cố gắng tìm hiểu. Bạn có thể đặt tên cho bất kỳ trình tự khác được hiển thị? Hành vi của mysql và nano có thể chỉ là một cách giải thích khác về các chuỗi thoát dường như được nhập vào.

Cuối cùng, câu hỏi là những gì gây ra những đầu vào quan trọng. Bạn có sử dụng máy tính xách tay, ví dụ như tự động điều khiển đèn nền bằng một số phần mềm độc quyền không? Tôi đã thấy một số phần mềm được cài đặt sẵn kỳ lạ thực sự mô phỏng các phím bấm thay vì sử dụng API. Bạn có thể muốn sử dụng một cái gì đó như inputlog cho chính mình.


Kể từ đó, tôi đã thay đổi hệ điều hành, đầu tiên chỉ thay đổi Win-8.1 & Ubuntu kép của mình thành Ubuntu, sau đó thành Mint và cuối cùng là Arch. Tôi chưa gặp phải bất kỳ vấn đề tương tự nào, điều đó khiến tôi tin rằng vấn đề này bị cô lập theo cách mà Windows tương tác với PuTTY. Về nguyên nhân của các yếu tố đầu vào quan trọng, tôi sẽ không ngạc nhiên nếu những gì bạn đề xuất là trường hợp này, tuy nhiên tôi không sử dụng hoặc nhận thấy bất kỳ loại điều khiển phần cứng tự động nào. Nếu tôi vẫn còn những bản ghi đó, tôi sẽ đăng chúng. EDIT: Nếu bất cứ ai khác đang trải nghiệm điều này, tôi khuyến khích bạn đăng thông tin này.
Zachary Polikarpus

Xem thêm câu trả lời của Gilles trong Tại sao Putty chèn ~ vào vỏ bash Fedora của tôi , điều này giải thích độc đáo tại sao người ta chỉ có thể nhìn thấy ~(và nghe thấy một con ong) khi thực sự có thứ gì đó giống như \e[3~được gửi.
Arjan

(Như một bên: bạn có thể muốn liên kết đến bài đăng đó, vì lúc đầu tôi nghĩ rằng việc nhìn thấy một lần duy nhất ~sẽ không chỉ ra một chuỗi thoát.)
Arjan

1

Tôi sử dụng tùy chọn -key: 07 trên dòng lệnh để khởi chạy caffiene .. Có vẻ như để ngăn chặn vấn đề Putty.

Chỉ cần đặt nó trong một tập tin bat

caffeine.exe -key: 07


Tôi sử dụng 'caffiene.exe -key: 07' cũng như nó phục vụ tốt cho tôi trong nhiều năm. Tuy nhiên, kể từ khi kết nối với pfSense của tôi (dựa trên FreeBSD), điều này được nhận ở phía bên kia là ^ [[28 ~ ... dường như được ánh xạ tới Ctrl + ^ (Đặt dấu) trong Nano. Điều này khá khó chịu (hãy tưởng tượng ai đó nhấn và giữ phím Shift trong khi bạn di chuyển dấu mũ văn bản trong Notepad). :) Tôi sẽ tìm một khóa khác ở phía caffeine hoặc thực hiện ánh xạ tùy chỉnh ở phía FreeBSD. (xem defs @ msdn.microsoft.com/en-us/l Library / windows / desktop / Lỗi )
Petru Zaharia

Chuyển sang caffeine.exe -key:0E(xem câu trả lời của tôi dưới đây). Có vẻ hoạt động tốt với Windows (8.1 64-bit) và Putty vui vẻ bỏ qua nó :)
Petru Zaharia

0

Ai đó trên các diễn đàn của Cisco đề nghị thay đổi thông số tốc độ bàn điều khiển để giải quyết vấn đề này.

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

Bạn chắc chắn đã thử tất cả các biến thể của tốc độ giao diện điều khiển trong Putty như được đề cập trong 1 ?

Lưu ý: Nếu tốc độ truyền được đặt khác với tốc độ mặc định, các ký tự lẻ được nhìn thấy trên CLI. Kiểm tra bảng1 để đặt tốc độ baud cho các giá trị Confreg khác nhau.


1
Tốc độ bàn điều khiển dành cho các kết nối nối tiếp. Anh ấy đang đề cập đến một kết nối SSH. Mặc dù SSH có cài đặt "Tốc độ đầu cuối" ... Tôi thực sự chưa bao giờ thấy điều này gây ra sự cố.
Jared

0

Tôi cũng gặp vấn đề tương tự và thấy rằng caffeine.exe thực sự là vấn đề. Lúc đầu, tôi nghĩ rằng nó không thể được gây ra bởi caffeine.exe vì tôi đã sử dụng điều này hơn 2 năm trên máy tính xách tay cũ của mình. Tôi đã thử thay đổi caffeine.exe - thay thế, nhưng điều đó đã gửi ^ C. Tìm thấy một chương trình khác, Mouse Jiggler, giúp bảo vệ màn hình tránh xa nhưng không gửi bất kỳ chuỗi Escape nào trong các phiên Putty của tôi nữa.


0

Giải pháp tốt hơn là định cấu hình các cài đặt trên phiên putty của bạn để Caffine không can thiệp vào nó.

Trong Putty dưới Bàn phím đầu cuối, chọn tùy chọn SCO. Trong Putty dưới Terminal Bell, thay đổi hành động thành Không có (để tắt chuông).

Caffine vẫn sẽ làm điều đó và không làm phiền phiên putty của bạn. (Tôi không sử dụng các phím Fn trong một phiên putty vì vậy tôi không biết điều gì xảy ra nếu bạn muốn sử dụng các phím Fn).


0

2017-09-20: Đã giải quyết việc tiêm char bằng cách bắt đầu caffeine với «caffeine.exe -useshift -noicon» trong trình lập lịch tác vụ được kích hoạt khi đăng nhập. Không có biểu tượng, không có thêm ký tự trong các phiên mintty / bash của tôi. Điều đó thật khó chịu. Cảm ơn tất cả mọi người cho gợi ý của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.