Computer >> Hướng Dẫn Máy Tính >  >> Xử Lý Sự Cố >> Linux

Sửa lỗi: ssh_exchange_identification 'connection closed by remote host'

Mặc dù trong nhiều trường hợp lỗi ssh_exchange_identification: Connection closed by remote host do vấn đề liên quan đến file cấu hình hosts.deny và hosts.allow, vẫn có nguyên nhân khác. Nếu bạn đang đọc bài này, chắc bạn đã kiểm tra cả hai file này không chặn IP của bạn khi ssh đến server từ xa.

Giả sử đó là trường hợp, bạn có thể đang đối mặt với vấn đề phụ thuộc (dependency), phân mảnh bộ nhớ (memory fragmentation), hoặc số lượng phiên (session) quá lớn từ từng client. Tin tốt là sau khi khắc phục xong, bạn sẽ không thấy lỗi này nữa.

Cách 1: Sửa phụ thuộc thiếu hụt

Nếu bạn nhận được lỗi ssh_exchange_identification: connection closed by remote host chỉ sau khi cập nhật OpenSSL hoặc glibc, có thể do thiếu phụ thuộc. Chạy sudo lsof -n | grep ssh | grep DEL từ dòng lệnh. Lệnh này liệt kê file mở, sau đó lọc những file vừa bị xóa liên quan đến ssh daemon.

Sửa lỗi: ssh_exchange_identification  connection closed by remote host

Nếu không có kết quả trả về, bạn vẫn có thể thử khởi động lại daemon hoặc toàn bộ hệ thống. Bạn nên thử khởi động lại nếu có nhiều lỗi được ném ra, tuy nhiên có thể bỏ qua các lỗi liên quan đến /run/user/1000/gvfs vì đó là vấn đề không liên quan do hệ thống file ảo.

Bạn cũng có thể thử dùng apt-get, pacman hoặc yum để cập nhật gói tin nếu nghi ngờ vấn đề phụ thuộc. Trên hệ thống Debian/Ubuntu, hãy thử sudo apt-get -f upgrade xem có sửa được gói bị hỏng không.

Cách 2: Khắc phục phân mảnh bộ nhớ

Nếu cách trên không giúp, bạn có thể gặp vấn đề phía host. Host chạy bên trong VM không luôn có phân vùng swap, dẫn đến phân mảnh bộ nhớ. Truy cập host bằng cách khác (trực tiếp nếu có thể) và khởi động lại các dịch vụ gặp sự cố. MySQL, Apache, nginx và các dịch vụ tương tự có thể là thủ phạm.

Mặc dù không luôn khả thi khởi động lại host, điều này có thể khắc phục sự cố và là ý tưởng tốt nếu bạn luân phiên gặp lỗi này và lỗi trả về địa chỉ IP. Hãy nhớ nếu bạn có quyền truy cập server, có thể chạy lệnh vmstat -s để lấy thống kê quan trọng về cách bộ nhớ được dùng, ngay cả với user bình thường.

Sửa lỗi: ssh_exchange_identification  connection closed by remote host

Cách 3: Kiểm tra các phiên ssh thừa

Ngoài ra, hãy kiểm tra xem host có đang cố kết nối đến server không. Bạn có thể đã vượt quá số phiên ssh tối đa mà không hay. Dọn dẹp các phiên cũ và thử kết nối lại. Cách dễ dàng: chạy lệnh who để xem tiến trình user nào đang đăng nhập. Bạn nên chỉ thấy 1-2 user. Nếu có nhiều user song song, hãy kill các tiến trình user đó và đăng nhập lại.

Điều này có thể xảy ra nếu sshd không kịp xử lý script khởi động nhiều phiên ssh trong vòng lặp. Nếu từng gặp trường hợp này, hãy thêm lệnh sleep 0.3 vào vòng lặp để daemon sshd kịp xử lý.

Cách 4: Tìm giới hạn kết nối sshd

Vấn đề kết nối như này đặc biệt phổ biến khi dùng ssh truy cập router hoặc thiết bị switch hộp rời rạc vì số kết nối tối đa mặc định rất nhỏ. Mặc dù bạn không muốn cho phép quá tải server, bạn có thể xem cài đặt mặc định.

Thử chạy Sửa lỗi: ssh_exchange_identification  connection closed by remote host trên server để xem sshd có thể xử lý bao nhiêu kết nối. Trong hầu hết trường hợp, hệ thống mặc định 10 kết nối đồng thời — đủ cho hầu hết cấu trúc server mà đa số user thường xuyên ssh.