Thời gian chờ nhàn rỗi mặc định cho OpenSSH là gì?


25

Tôi dường như không thể tìm thấy câu trả lời cho câu hỏi đơn giản này, mà tôi cần cho một số tài liệu tuân thủ.

Trên bản cài đặt mặc định của CentOS 6.5 (OpenSSH 5.3p1-94.el6), sau bao lâu thì phiên bản SSH của người dùng sẽ bị chấm dứt? Tôi tin rằng những điều sau đây có thể được thiết lập để tăng thời gian chờ nhàn rỗi, nhưng chúng được nhận xét theo mặc định.

$ grep -i alive /etc/ssh/sshd_config
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3

Ngoài ra, có một lệnh để kết xuất một danh sách các sshdcài đặt hiện tại không? Tôi không thấy gì cả man sshd.


3
Một số shell có thể được đặt để thoát sau khi hết thời gian. Điều đó sẽ khiến phiên ssh chấm dứt. Kiểm tra xem biến môi trường TMOUT của bạn đã được đặt chưa.
Kenster

Câu trả lời:


23

Các dòng nhận xét sshd_configthường hiển thị mặc định. Đây là trường hợp với tất cả các dòng trong câu hỏi của bạn. Bạn có thể xác minh điều này trong sshd_configtrang . Dưới đây là các đoạn có liên quan:

TCPKeepAlive

      Chỉ định xem hệ thống có nên gửi tin nhắn cố định TCP sang phía bên kia không. Nếu chúng được gửi đi, cái chết của kết nối hoặc sự cố của một trong các máy sẽ được chú ý chính xác. Tuy nhiên, điều này có nghĩa là các kết nối sẽ chết nếu tuyến đường tạm thời ngừng hoạt động và một số người cảm thấy phiền phức. Mặt khác, nếu các thủ tục TCP không được gửi, các phiên có thể bị treo vô thời hạn trên máy chủ, khiến người dùng của Ghost ghost và mất tài nguyên máy chủ.

      Mặc định là có, vâng vâng (để gửi tin nhắn lưu giữ TCP) và máy chủ sẽ thông báo nếu mạng bị hỏng hoặc máy chủ của máy khách gặp sự cố. Điều này tránh các phiên treo vô hạn.

      Để vô hiệu hóa các thông báo giữ TCP, giá trị này phải được đặt thành Không có chế độ.

      Tùy chọn này trước đây được gọi KeepAlive.

ClientAliveCountMax

      Đặt số lượng tin nhắn còn sống của khách hàng (xem bên dưới) có thể được gửi mà không sshd (8) nhận lại bất kỳ tin nhắn nào từ máy khách. Nếu đạt đến ngưỡng này trong khi tin nhắn còn sống của khách đang được gửi, sshd sẽ ngắt kết nối máy khách, chấm dứt phiên. Điều quan trọng cần lưu ý là việc sử dụng tin nhắn sống của khách hàng rất khác vớiTCPKeepAlive (phía dưới)(ở trên). Các thông điệp còn sống của khách hàng được gửi qua kênh được mã hóa và do đó sẽ không thể giả mạo được. Tùy chọn giữ lại TCP được kích hoạt bởi TCPKeepAlivelà giả mạo. Cơ chế sống của máy khách có giá trị khi máy khách hoặc máy chủ phụ thuộc vào việc biết khi nào kết nối không hoạt động.

      Giá trị mặc định là 3. Nếu ClientAliveInterval(xem bên dưới) được đặt thành 15 và ClientAliveCountMaxđược để ở mặc định, các máy khách SSH không phản hồi sẽ bị ngắt kết nối sau khoảng 45 giây. Tùy chọn này chỉ áp dụng cho giao thức phiên bản 2.

ClientAliveInterval

      Đặt khoảng thời gian chờ tính bằng giây sau đó nếu không nhận được dữ liệu từ máy khách, sshd (8) sẽ gửi tin nhắn qua kênh được mã hóa để yêu cầu phản hồi từ máy khách. Mặc định là 0, cho biết rằng những tin nhắn này sẽ không được gửi đến máy khách. Tùy chọn này chỉ áp dụng cho giao thức phiên bản 2.


1
Sửa lỗi cho tôi nếu sai, nhưng nếu không có tường lửa ở giữa tôi và máy (w / cấu hình mặc định), thì tôi có bao giờ bị ngắt kết nối không? Tôi biết tường lửa của chúng tôi giảm các kết nối TCP nhàn rỗi sau 60 phút, vì vậy đó là nơi các kết nối nhàn rỗi đang diễn ra. Tôi chỉ muốn kiểm tra và xem liệu OpenSSH có đóng các phiên rõ ràng không. Tôi nghĩ rằng câu trả lời là Không, openssh không đóng các kết nối nhàn rỗi, nhưng tường lửa thường làm. Các cài đặt được đề cập trong câu trả lời của bạn thực sự giúp duy trì kết nối hoặc chấm dứt đúng phiên nếu thấy nó bị hủy.
Banjer

2
Văn bản được trích dẫn nói rằng mặc định cho ClientAliveInterval là 0, có nghĩa là nó không xác định khoảng thời gian mà kết nối vẫn mở. Tuy nhiên, chúng ta biết rằng khoảng thời gian có một số giá trị hữu hạn theo mặc định. Do đó, dường như phải có một số tham số khác đặt thời gian kết nối mở theo mặc định. Nếu phân tích của tôi ở trên là chính xác, thì giả sử cả máy chủ và máy khách đều là máy linux chạy openssh và cả hai đều sử dụng tất cả các giá trị mặc định. Trong trường hợp này, bên nào đặt mặc định, giá trị của nó là gì và được đặt ở đâu?
Ben Crowell

2
@BenCrowell Tuy nhiên, chúng tôi biết rằng khoảng thời gian có một số giá trị hữu hạn theo mặc định. Có gì khoảng thời gian và làm thế nào để bạn biết điều này?
Piotr Dobrogost

9

Bạn có thể thiết lập SSH keepalive cho cả phía máy khách hoặc máy chủ:

Phía khách hàng

Tập tin: /etc/ssh/ssh_config

Nội dung:

Host *
ServerAliveInterval XX
ServerAliveCountMax YY

Phía máy chủ

Tập tin: /etc/ssh/sshd_config

Nội dung:

ClientAliveInterval XX
ClientAliveCountMax YY

Trích xuất từ: http://www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html


6
Hữu ích, nhưng không trả lời câu hỏi theo bất kỳ cách nào.
bzeaman

6

OpenSSH sẽ không chấm dứt một phiên shell đã không hoạt động trong một thời gian. Đây không phải là điều mà OpenSSH làm. Việc kết thúc phiên shell không hoạt động không liên quan đến cấu hình của OpenSSH.

Các cài đặt mà bạn đang hiển thị có liên quan đến thời gian chờ khi kết nối bị hỏng và không liên quan đến trình bao trên máy chủ từ xa và những gì người dùng đang làm hoặc không làm ở đó.

Shell của máy chủ từ xa có thể chấm dứt (hoặc có thể bị giết bởi một số quy trình khác) sau một thời gian nhàn rỗi, nhưng điều này không liên quan đến cấu hình của dịch vụ SSH trên máy chủ và máy khách SSH của bạn.

Liên quan:


Để kết xuất sshdcấu hình, sử dụng "chế độ thử nghiệm mở rộng" làm gốc:

sshd -T

Đây là tài liệu trong các sshd(8)nhãn hiệu (nhìn OpenSSH_7.7, LibreSSL 2.7.2trên OpenBSD đây):

-T

Chế độ thử nghiệm mở rộng. Kiểm tra tính hợp lệ của tệp cấu hình, xuất cấu hình hiệu quả sang thiết bị xuất chuẩn và sau đó thoát . Tùy chọn, quy tắc đối sánh có thể được áp dụng bằng cách chỉ định các tham số kết nối bằng một hoặc nhiều -Ctùy chọn.

Tùy chọn này đã được thêm vào sshdcho OpenSSH 5.1 / 5.1p1 trong năm 2008.


3

Nếu yêu cầu là đóng kết nối SSH sau một thời gian không hoạt động, chính các shell cung cấp các biến hết thời gian chờ.

Đối với bash:

TMOUT: Nếu được đặt thành giá trị lớn hơn 0, TMOUT được coi là thời gian chờ mặc định cho nội dung đã đọc. Lệnh select kết thúc nếu đầu vào không đến sau TMOUT giây khi đầu vào đến từ một thiết bị đầu cuối. Trong một vỏ tương tác, giá trị được hiểu là số giây chờ đợi đầu vào sau khi đưa ra dấu nhắc chính. Bash chấm dứt sau khi chờ số giây đó nếu đầu vào không đến.

kiểm tra điều này bằng cách chạy TMOUT=10và đợi trong 10 giây để đóng kết nối.

Đối với tcsh:

Biến vỏ tự động có thể được đặt để đăng xuất hoặc khóa vỏ sau một số phút không hoạt động nhất định.

Trong tcsh, cú pháp để đặt thời gian chờ trong mười phútset autologout=10. Điều này không hoạt động trong csh ban đầu.


-2

Nếu bạn muốn thời gian chờ là 10 giây cho mọi người, hãy làm như sau đối với cấu hình máy chủ (sshd_config):

ClientAliveInterval 10
ClientAliveCountMax 0

Nếu bạn muốn thời gian chờ là 10 giây cho các máy khách cục bộ, hãy làm như sau đối với cấu hình máy khách (ssh_config):

ServerAliveInterval 10
ServerAliveCountMax 0

Nếu tham số AliveCountMax khác không, có lẽ nó sẽ không hoạt động vì máy chủ sẽ trả lời đặt lại bộ hẹn giờ (trừ khi có vấn đề về kết nối). Bạn có thể thấy điều này bằng cách chạy ứng dụng khách ssh với tính năng gỡ lỗi được bật.

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.