Quá trình SSH không bị giết trên máy từ xa khi hệ thống từ xa bị ngắt kết nối một cách bất ngờ


8

Tôi có một câu hỏi mà tôi chưa thể tìm được câu trả lời. Tôi có hai máy tính, cả hai đều chạy Ubuntu 12.04. Tôi giữ một trong những máy tính của mình ở nhà và sử dụng SSH để kết nối với nó từ máy tính khác ("từ xa"). Máy tính từ xa có thể kết nối với máy tính ở nhà mà không gặp vấn đề gì. Máy tính từ xa cũng có SetAliveInterval được đặt thành 60 in / etc / ssh / ssh_config, để kết nối không chết nếu tôi rời khỏi máy tính một lát.

Thỉnh thoảng, kết nối internet của tôi trên máy tính từ xa bị gián đoạn. Internet bị gián đoạn khiến đường hầm SSH của tôi đóng (tất nhiên). Tuy nhiên, khi tôi khôi phục kết nối internet và kết nối lại với máy tính ở nhà bằng đường hầm SSH mới, tôi có thể thấy #ps axrằng quá trình kết nối SSH cũ vẫn đang chạy. Đây là một vấn đề vì tôi sử dụng một thư mục nhà được mã hóa trên máy tính gia đình, nó không cho phép các tệp được mã hóa lại cho đến khi kết nối SSH (hiện đã chết) bị hủy.

Có cách nào để đặt sshd_config trên máy tính ở nhà để nó tự động phát hiện khi kết nối bị chết và chấm dứt không?

Câu trả lời:


5

Hãy thử màn hình hoặc tmux . Về phía máy chủ hoặc cả hai bên nếu bạn muốn:

sudo apt-get install tmux

Sau khi đăng nhập, bắt đầu tmux .

tmux

Nếu kết nối bị ngắt, hãy đăng nhập lại qua ssh và kết nối lại phiên tmux . Để khám phá số phiên:

tmux ls

Đầu ra có thể là một cái gì đó như thế này:

Cửa sổ 0: 1 (đã tạo Thứ ba ngày 25 tháng 12 19:20:40 2012)

Kết nối với phiên được đánh số tmux như thế này:

tmux attach -t 0

Sau đó, bạn trở lại ngay nơi bạn rời khỏi nó. Bạn sẽ không phải giết phiên. Họ chỉ chờ chuyến thăm tiếp theo của bạn. Hoặc, nếu bạn chỉ muốn giết phiên ...

Về phía máy chủ, hãy xem /etc/ssh/sshd_configcài đặt cho ClientAliveIntervalClientAliveCountMax . ( man 5 ssh_config)

ClientAliveInterval 300
ClientAliveCountMax 0

Khi chúng đã được thay đổi thành tùy chọn của bạn, hãy khởi động lại máy chủ SSH.

sudo /etc/init.d/ssh restart

300 là giây (năm phút).


Điều này thật đúng với gì mà tôi đã tìm kiếm! Tôi sẽ bắt đầu với ClientAliveInterval và chắc chắn cũng sẽ dùng thử tmux. Cảm ơn bạn!
JL

1
Tùy chọn thứ ba ngoài Screen và Tmux là Byobu : Website , Wikipedia . Từ trang web: "Ban đầu nó được thiết kế để cung cấp các cải tiến trang nhã cho Màn hình GNU thực tế, đơn giản, có chức năng, để phân phối máy chủ Ubuntu. Byobu hiện bao gồm một cấu hình nâng cao, khóa phím tiện lợi, tiện ích cấu hình và thông báo trạng thái hệ thống có thể chuyển đổi cho cả trình quản lý cửa sổ GNU Screen và bộ ghép kênh đầu cuối Tmux hiện đại hơn và hoạt động trên hầu hết các bản phân phối Linux, BSD và Mac. "
sierrasdetandil

1

Bạn có thể thử moshCài đặt mosh , một sự thay thế cho SSH được xây dựng trên SSH. Nó hỗ trợ và chuyển vùng và kết nối không liên tục, vì vậy phiên Mosh (SSH) của bạn sẽ tiếp tục ở nơi bạn rời đi bất cứ khi nào kết nối Internet của bạn được thiết lập lại sau khi bị gián đoạn.

Bạn sẽ cần cài đặt Mosh trên cả hai máy.

Người giới thiệu:

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.