Cách thoát phiên SSH không phản hồi trên Linux
Bạn có thể đang gõ một phiên SSH từ xa và đột nhiên không có gì xảy ra. Hệ thống dường như không phản hồi với thao tác nhấn phím của bạn. Bạn làm nghề gì?
Việc phiên SSH bị đình trệ hoặc không phản hồi có thể do nhiều yếu tố khác nhau như gián đoạn mạng, quá tải máy chủ hoặc trục trặc phần mềm. Để chấm dứt một phiên không phản hồi, người ta có thể thử một số phương pháp, bao gồm cả việc buộc chấm dứt kết nối bằng lệnh “kill” trong cửa sổ terminal hoặc bằng cách đóng tất cả các kết nối được liên kết thông qua ứng dụng đã khởi tạo phiên SSH. Trong một số trường hợp, việc chuyển sang một giao thức thay thế như Mosh, mang lại hiệu suất nâng cao nhờ các đường hầm liên tục và tích hợp shell tích hợp, có thể mang lại giải pháp hiệu quả hơn.
Nguyên nhân khiến phiên SSH bị treo?
Một trong những lý do chính khiến phiên SSH không phản hồi là do mất kết nối mạng do tín hiệu Wi-Fi yếu hoặc thiết bị từ xa vô tình bị treo. Những trường hợp như vậy đặc biệt phổ biến ở những người dùng sử dụng máy tính xách tay, vì họ có thể bỏ qua việc xem xét phiên đang diễn ra khi đóng nắp máy tính xách tay hoặc không duy trì kết nối Internet ổn định.
SSH, viết tắt của Secure Shell, ban đầu được hình thành vào thời điểm các cá nhân thường không sử dụng máy tính xách tay làm phương tiện chính để truy cập tài nguyên mạng. Thiết kế và chức năng của SSH được điều chỉnh để hoạt động tối ưu trong môi trường nơi các kết nối được thiết lập thông qua cáp vật lý thay vì truyền không dây. Vì vậy, nó thường được coi là hiệu quả hơn khi sử dụng với mạng có dây so với mạng không dây.
Chấm dứt bằng chuỗi thoát
Nếu kết nối Secure Shell (SSH) của bạn không phản hồi hoặc bị đóng băng, cách hành động thích hợp là sử dụng chuỗi thoát. Các hành động được thực hiện thông qua chuỗi thoát cho phép liên lạc với máy khách SSH thay vì thiết bị chủ ở xa. Ký tự thoát mặc định trên máy khách OpenSSH đòi hỏi phải sử dụng ký hiệu dấu ngã (~), đứng trước bất kỳ chuỗi thoát nhất định nào.
Để thoát khỏi ứng dụng khách Secure Shell (SSH), người ta có thể sử dụng biểu tượng dấu ngã theo sau là dấu chấm (dấu chấm), thường nằm trên cùng một hàng bàn phím với biểu tượng dấu ngã.
Ngoài ra, người ta có thể chọn sửa đổi ký tự thoát theo sở thích của mình. Để làm như vậy, chỉ cần sử dụng tùy chọn “-e” khi thực hiện lệnh. Ngoài ra, thay đổi này có thể được thực hiện vĩnh viễn bằng cách điều chỉnh tham số “EscapeChar” trong tệp “.ssh/config” nằm trong thư mục chính của một người trên hệ thống máy chủ.
Sử dụng lệnh kill
Nếu việc sử dụng chuỗi thoát không thành công, người ta có thể cố gắng chấm dứt máy khách SSH bằng cách xác định mã định danh quy trình (PID) của nó. Điều này có thể đạt được bằng cách dẫn đầu ra của lệnh “ps” thông qua tìm kiếm với “grep”:
ps aux | grep ssh
Tham số “aux” trong lệnh hiển thị các tiến trình (“ps”) biểu thị rằng tất cả các tiến trình đang chạy trên hệ thống phải được liệt kê, bất kể chủ sở hữu của chúng hoặc liệu chúng có thiết bị đầu cuối liên quan hay không.
Khi quản lý nhiều phiên bản của kết nối Secure Shell (SSH), việc xác định phiên hoạt động có thể gặp khó khăn do thiếu chỉ báo trực quan. Tuy nhiên, bằng cách kiểm tra tệp nhật ký hiển thị thông tin như tên người dùng và địa chỉ IP được liên kết với mỗi phiên, có thể xác định được phiên bản hiện đang chạy. Để ngắt kết nối một phiên không hoạt động, chỉ cần thực hiện lệnh “kill” theo sau là ID tiến trình (PID) của lần chấm dứt mong muốn.
kill [PID]
Để có kết nối SSH tốt hơn, hãy sử dụng Mosh!
Cách tốt hơn để tránh các phiên SSH bị đóng băng gây phiền nhiễu là sử dụng Mosh. Nếu kết nối bị rớt, Mosh sẽ cho phép bạn duy trì kết nối. Nó sẽ gửi bất kỳ tin nhắn nào khi bạn kết nối lại. Nó cũng hoạt động khi bạn đặt máy ở chế độ ngủ.
Khi sử dụng bộ ghép kênh đầu cuối như GNU Screen hoặc tmux, bạn có khả năng duy trì và sau đó tiếp tục các phiên SSH của mình trong trường hợp bị gián đoạn, cung cấp kết nối liền mạch. Tuy nhiên, khi kết hợp với Mosh, khả năng của chúng sẽ được nâng cao hơn nữa, mang lại trải nghiệm người dùng được tối ưu hóa.
Để cài đặt Mosh trên Debian và Ubuntu:
sudo apt install mosh
Và trên Arch Linux:
sudo pacman -S mosh
Trên dòng distro của Red Hat:
sudo dnf install mosh
Bây giờ bạn có thể thoát khỏi các phiên SSH bị kẹt
Mosh cung cấp giải pháp hiệu quả hơn để duy trì phiên SSH hoạt động so với các phương pháp truyền thống như sử dụng chuỗi thoát hoặc sử dụng lệnh “kill”. Công cụ này cung cấp khả năng kết nối liên tục bất chấp các gián đoạn như mất kết nối hoặc thời gian không hoạt động, do đó loại bỏ nhu cầu thực hiện các quy trình xác thực lại lặp đi lặp lại thường liên quan đến các phiên SSH không phản hồi.