Câu hỏi Cách để tránh thời gian chờ kết nối và đóng băng của thiết bị đầu cuối GNOME


Khi tôi kết nối thông qua ssh đến một số máy chủ, nó hết thời gian chờ và "đóng băng" thiết bị đầu cuối (không chấp nhận đầu vào, không ngắt kết nối, không thể Ctrl-C để giết quá trình ssh hoặc bất kỳ thứ gì).

Đây là trong Ubuntu gnome-terminal mặc dù nó có vẻ là tạm dừng đầu vào / đầu ra của thiết bị đầu cuối và không ảnh hưởng đến hoạt động của phần mềm Thiết bị đầu cuối GNOME. Vì vậy, ít lỗi hơn với gnome-terminal hơn là mâu thuẫn khó chịu với ssh.

Vì vậy, có cách nào để ngăn chặn / lấy lại thiết bị đầu cuối từ các kết nối ssh đã hết thời gian không?


217
2018-01-20 23:33


gốc


Có thể trùng lặp Làm thế nào để giữ một đường hầm SSH được mở một cách đáng tin cậy? - Murmel


Các câu trả lời:


sshd (máy chủ) đóng kết nối nếu nó không nghe thấy bất cứ điều gì từ máy khách trong một thời gian. Bạn có thể yêu cầu khách hàng của mình gửi tín hiệu đăng nhập vào máy chủ một lần trong một thời gian.

Cấu hình cho điều này là trong tập tin ~/.ssh/config. Để gửi tín hiệu cứ bốn phút một lần đến remotehost, đặt những thứ sau vào ~/.ssh/config.

Host remotehost
  HostName remotehost.com
  ServerAliveInterval 240

Đây là những gì tôi có trong ~/.ssh/config.

Để kích hoạt nó cho tất cả các máy chủ sử dụng:

Host *
  ServerAliveInterval 240

Ngoài ra hãy chắc chắn để chạy chmod 600 ~/.ssh/configvì tệp cấu hình không được đọc trên toàn thế giới.


244
2018-01-20 23:53



Cảm ơn sblair đã giúp tôi với từ ngữ, nó được đánh giá cao. Tôi đã thay đổi "không nên" trở lại "phải không" bởi vì ssh kiểm tra quyền của tập tin và nếu nó là thế giới hoặc nhóm có thể đọc được nó không thành công. - Ludwig Weinzierl
Đây không phải là những gì OP hỏi. Anh ấy không bị đuổi vì không hoạt động. Anh ấy đang cố gắng kết nối và thiết bị đầu cuối của anh ấy bị đóng băng. - Cerin
Đây là đâu ~/.ssh/config? - User
@User '~ /' đại diện cho thư mục chính của bạn. '.ssh' là một thư mục trong thư mục chính của bạn. - wkm
điều này là vô dụng nếu kết nối của bạn thực sự bị mất ... - so12311


nhấn Đi vào, ~, . cái khác để ngắt kết nối khỏi phiên bị đóng băng.

Phần "ESCAPE CHARACTERS" trong trang ssh man giải thích các chi tiết cơ bản.


232
2018-01-20 23:44



Câu trả lời này xuất hiện để tôi trả lời chính xác hơn câu hỏi, và trong mọi trường hợp, là câu trả lời tôi đang tìm kiếm. - CoatedMoose
Lưu ý rằng bạn cần bỏ ghi chú dòng EscapeChar ~ trong /etc/ssh/ssh_config (hoặc là ~/.ssh/ssh_config nếu bạn thích). - Aditya M P
@adityamenon Không, EscapeChar ~ đã được cài đặt sẵn. - Peter Eisentraut
@Mark câu hỏi yêu cầu "là có một cách để ngăn chặn lấy lại các thiết bị đầu cuối từ kết nối ssh đã hết thời gian chờ"Tôi nhấn mạnh. - CoatedMoose
Mặc dù nó không chính xác trong bối cảnh của câu hỏi, đây chính là điều tôi muốn. - Subin Sebastian


Ngay cả tho này không phải là một câu trả lời trực tiếp cho câu hỏi của bạn, nó có liên quan cao đến vấn đề bạn có. Thay vì cố gắng giữ cho kết nối còn sống (tất cả các kết nối cuối cùng đều chết), bạn có thể sử dụng các bộ ghép kênh đầu cuối, như screen và tmux giữ cho phiên hoạt động trong nền ngay cả khi thiết bị đầu cuối của bạn bị ngắt kết nối.

Về cơ bản khi bạn đăng nhập vào máy chủ SSH, bạn sẽ chạy ngay lập tức screen sẽ tạo và đính kèm một phiên mới:

$ screen

Sau đó, bạn đi trước và làm công việc của bạn với vỏ như bạn thường làm. Bây giờ nếu kết nối bị ngắt, khi bạn có thể trở lại trực tuyến và kết nối lại với máy chủ qua SSH, bạn sẽ có danh sách các phiên hiện tại với:

$ screen -ls

Để gắn lại một phiên:

$ screen -r <session>

Ở đâu <session> là tên PID hoặc tên phiên. Bạn sẽ được kết nối lại với phiên của mình và bạn có thể tiếp tục từ nơi bạn đã dừng lại!

Bạn thậm chí có thể tách phiên và kết nối lại từ nhà để đón từ điểm chính xác nơi bạn rời đi. Để tách phiên bạn sử dụng C-a theo dõi bởi C-d (thats Control + A và sau đó Control + D).

hướng dẫn trực tuyến đơn giản cũng.

Sử dụng screen và tmux trên máy chủ từ xa được coi là thực hành tốt nhất và là rat khuyen khich. Một số người đi xa như có screen là shell đăng nhập mặc định của họ, vì vậy khi họ kết nối họ ngay lập tức bắt đầu một screen phiên.


38
2017-07-03 01:28



một cách khác là sử dụng mosh: mosh.mit.edu - Zombies
Điều này đặc biệt hữu ích nếu bạn đang sử dụng điểm phát sóng hoặc wifi đôi khi bị mất. - Randall


Thử thêm -o ServerAliveInterval=30 vào chuỗi kết nối của bạn (30 có nghĩa là 30 giây và tất nhiên có thể được điều chỉnh)


11
2018-02-06 14:13





Bạn cũng có thể đặt khoảng thời gian chờ không hoạt động từ phía máy chủ SSH:

Tập tin: /etc/ssh/ssh_config

Nội dung:

ClientAliveInterval XX
ClientAliveCountMax YY

Điều này làm việc theo cách chính xác giống như cài đặt máy khách, nhưng các gói tin rỗng được gửi từ máy chủ, chứ không phải là máy khách.

Trích từ:

http://www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html


5
2018-02-12 22:45





Đối với những người muốn ngăn chặn khách hàng từ thời gian ra ở nơi đầu tiên.

Bạn có thể thử đặt ConnectTimeout 0 trong tệp cấu hình. Giá trị 0 có nghĩa là kết nối sẽ được giữ nguyên vĩnh viễn trừ khi đóng.

tệp cấu hình (hoặc ssh_config) của bạn có thể trông giống như sau:

Host *
   ConnectTimeout 0

1
2017-12-17 02:19