vim SSH-ით იყინება? შეამოწმეთ stty, სანამ VPN-ს დაადანაშაულებთ
SSH-ით გაყინული რედაქტორი ჩვეულებრივ ტერმინალის მდგომარეობის პრობლემაა და არა გაწყვეტილი გვირაბი. წაიკითხეთ stty სწორ ფსევდოტერმინალზე და შემდეგ მხოლოდ ის შეაკეთეთ.
ასეთი სესიები დაკავშირებული რჩება, სანამ რედაქტორი იწყება, შემდეგ ეკრანი წყვეტს განახლებას, თუმცა SSH პროცესი აშკარად ცოცხალია. აკრეფა არაფერს იძლევა, Ctrl-C თითქოს არაფერს აკეთებს, და აშკარა დასკვნაა, რომ VPN-მა რაღაც ჩამოაგდო. უმეტეს დროს გვირაბი რიგზეა და დისტანციური ფსევდოტერმინალი ისეთ მდგომარეობაშია, რომელიც არავის გაუთვალისწინია, რადგან ექო, კანონიკური შეტანა და ნაკადის კონტროლი ტერმინალში ცხოვრობს და არა ქსელში. იმის გარკვევა, ამ სამიდან რომელი გადაადგილდა, ორი ბრძანების საქმეა.
გაყინვა ტერმინალში ცხოვრობს, არა გვირაბში
ფსევდოტერმინალი ბაიტებზე მეტს ატარებს. ის ინახავს ხაზის დისციპლინის დროშებს, რომლებიც წყვეტენ, აისახება თუ არა შეტანა, ელოდება თუ არა კითხვა ახალ ხაზს, ქმნიან თუ არა გარკვეული სიმბოლოები სიგნალებს და შეიძლება თუ არა გამოსავლის შეჩერება საკონტროლო სიმბოლოთი. ინტერაქტიული რედაქტორი ამ ტერმინალს მთელი ხნით ნედლ რეჟიმში გადაიყვანს და გასვლისას წინა პარამეტრები უნდა აღადგინოს. როცა აღდგენა არ ხდება, ჭურვი, რომელშიც ბრუნდებით, არ არის ის ჭურვი, რომელიც დატოვეთ, თუნდაც კავშირი არასოდეს გაწყვეტილიყო.
შეადარეთ ტერმინალები, სანამ რამეს დაასკვნით. მეორე სესია იმავე რედაქტორით ამტკიცებს, რომ კლიენტს და გზას სამუშაოს შესრულება შეუძლიათ; ის არაფერს ამბობს იმ ტერმინალზე, რომლის დროშებიც გატეხილია.
წაიკითხეთ პარამეტრები იმ ტერმინალზე, რომელიც გაიყინა
ჯერ ამოიცანით მოწყობილობა, შემდეგ წაიკითხეთ მისი მდგომარეობის ორივე ფორმა. წაკითხვადი ფორმა აჩვენებს, რა არის დაყენებული, ხოლო მანქანური ფორმა არის ის, რომელსაც მოგვიანებით უკან დააბრუნებთ.
tty
stty -a
stty -g
სამი დროშაჯგუფი ხსნის ამ ანგარიშების უმეტესობას. ექოს პარამეტრები წყვეტენ, საერთოდ ჩანს თუ არა კლავიშის დაჭერა, ამიტომ გამორთული ექოს მქონე ტერმინალი მკვდრად გამოიყურება, სანამ ჭურვი ყოველ სიმბოლოს იღებს. კანონიკური რეჟიმი წყვეტს, პროგრამა შეტანას ხედავს თუ არა ერთ ხაზად, ამიტომ კანონიკურ რეჟიმში დატოვებული ტერმინალი ნედლი რეჟიმის აპლიკაციას ისე აჩვენებს, თითქოს ის კლავიშებს Enter-ამდე უგულებელყოფდეს. ნაკადის კონტროლის პარამეტრები წყვეტენ, ტერმინალი ემორჩილება თუ არა XON და XOFF სიმბოლოებს, და სწორედ ეს ჯგუფი ქმნის სამიდან ყველაზე დამაჯერებელ ყალბ გაყინვას.
ჩაწერეთ გამოსავალი, სანამ რამეს შეცვლით, განსაკუთრებით მაშინ, როცა სესიას აქვს მორგებული კლავიშების მიბმა, რომელზეც ვიღაც არის დამოკიდებული. მანქანური ფორმა ყველაზე უსაფრთხო ჩანაწერია, იმ პირობით, რომ ის იმპლემენტაციაზეა დამოკიდებული და უნდა აღადგინოს იმავე ტიპის სისტემამ, რომელმაც შექმნა.
შეაკეთეთ სწორედ ის ტერმინალი, და არა სესია, რომელშიც აკრეფთ
სტანდარტული შეკეთება აღადგენს სახელმძღვანელოს გვერდზე ჩამოთვლილ ჯანსაღ პროფილს და გავლენას ახდენს მხოლოდ ერთ ტერმინალზე. თუ რედაქტორს ჯერ კიდევ აქვს შეუნახავი სამუშაო ამ ტერმინალში, მიატოვეთ ის, სანამ სამუშაო შეინახება.
სხვა ჭურვიდან პირდაპირ გამიზნეთ გაყინული მოწყობილობა, რათა ტერმინალი, რომელშიც მუშაობთ, ხელუხლებელი დარჩეს.
stty -F /dev/pts/7 -a
stty -F /dev/pts/7 sane
ცარიელი ეკრანი დაზიანებული ჩვენებით ცალკე პრობლემაა გატეხილი ხაზის დისციპლინისგან და reset პროგრამა მას ტერმინალის ინიციალიზაციის მიმდევრობების გაშვებით ეხმარება. ჯერ სცადეთ მდგომარეობის შეკეთება, რადგან ის ცვლის პარამეტრებს, რომელთა დათვალიერებაც შეგიძლიათ, მაშინ როცა reset მიმდევრობა ეკრანს გადაწერს და არაფერს ხსნის იმაზე, როგორ გატყდა.
Ctrl-S-ის ხაფანგი დამაჯერებელი გაყინვის მიღმა
როცა პროგრამული ნაკადის კონტროლი ჩართულია და ჩვეულებრივი სიმბოლოები მინიჭებულია, Ctrl-S ტერმინალს ეუბნება შეწყვიტოს გამოსავლის გაგზავნა, ხოლო Ctrl-Q — განაგრძოს. სესია მთელი დრო ცოცხალი რჩება, ერთი Ctrl-Q ხშირად მთელი შეკეთებაა და არც ერთ ჟურნალში არაფერი ჩანს, და ასე გადაურჩება ეს გაყინვა ამდენ ესკალაციას.
შეამოწმეთ რეალური პარამეტრები, ვიდრე ჩათვლით. დაწყებისა და გაჩერების სიმბოლოები შეიძლება გადანიჭდეს ან გამოირთოს, და გამორთული ნაკადის კონტროლის მქონე ტერმინალი არც ერთზე რეაგირებას არ მოახდენს.
თუ მდგომარეობა ბრუნდება, ან თავად SSH იჭედება
განმეორებადი ცუდი მდგომარეობა მიუთითებს რაღაცაზე, რაც დროშებს ცვლის მათი აღდგენის გარეშე: გაშვების ფაილი, გადახვევის სკრიპტი, მულტიპლექსორი, რომელიც არასწორ ფანჯარას აბრუნებს, ან აპლიკაცია, რომელიც ნედლ რეჟიმს ინახავს და კვდება. დაამატეთ პირობითი შემოწმება, რომელიც მდგომარეობას იტყობინება უპირობო განულების ნაცვლად, რადგან საერთო განულება მიზეზს მალავს და შეიძლება განზრახ პარამეტრები გადაფაროს.
როცა ჩვეულებრივი SSH ტრაფიკიც იჭედება, ან შეკეთება არაფერს ცვლის, ტერმინალი წყვეტს ეჭვმიტანილობას.
ssh -vvv [email protected]
ping -M do -s 1400 -c 3 host.example.com
შეჩერება, რომელიც მხოლოდ დიდი გადაცემების დროს ჩნდება, მიუთითებს გზის MTU პრობლემაზე, ხოლო ის, რომელიც ცალკეულ დაჭერებსაც ყლაპავს, მიუთითებს გზაზე ან სერვერზე და არა პაკეტის ზომაზე. ტერმინალის მტკიცებულებები ცალკე შეინახეთ ქსელის მტკიცებულებებისგან, რადგან მეორე სესიაში მომუშავე რედაქტორი არ არის მტკიცებულება, რომ პირველი ტერმინალი ოდესმე ჯანსაღი იყო.