Giới hạn của ghép kênh SSH


26

Tôi có mục sau đây trong .ssh/configtập tin của tôi

Host AAA
    User BBB
    HostName CCC
    ControlMaster auto
    ControlPath ~/.ssh/%r@%h:%p

Ở trên cho phép tôi ghép nhiều phiên ssh thông qua cùng một kết nối ssh mà không cần phải nhập mật khẩu mỗi khi tôi cần một phiên mới (miễn là kết nối chính vẫn mở).

Tuy nhiên, tôi nhận thấy rằng một khi tôi có số lượng kết nối tương đối cao (~ 7), tôi không thể thêm nhiều phiên vào cùng một kết nối được ghép kênh và tôi bắt đầu gặp lỗi sau:

> ssh -X AAA

mux_client_request_session: session request failed: Session open refused by peer
Password: 

Những câu hỏi của tôi:

Tại sao tôi nhận được lỗi này? Có giới hạn nào trong # phiên ssh tôi có thể ghép kênh trong cùng một kết nối không? Tôi có thể thay đổi giới hạn đó không? Đó sẽ là một ý tưởng tồi?


2
Tôi không thể trả lời các câu hỏi trực tiếp, nhưng có thể đưa ra một số gợi ý về việc theo dõi vấn đề. Vì đồng nghiệp đã từ chối kết nối, tôi bắt đầu bằng cách xem nhật ký trên hệ thống bạn đang kết nối. Xem nếu sshd cho bất kỳ lỗi. Nếu không, hãy tăng LogLevel và thử lại. Nếu bạn tìm thấy một thông điệp tường trình không rõ ràng ngay lập tức và tìm kiếm cụm từ không có ích, bạn có thể sử dụng grep trên mã nguồn. Thông báo lỗi thường được bao quanh bởi các điều kiện - một (hoặc một số) trong số chúng không được đáp ứng và đó là lý do tại sao thông báo này xuất hiện.
Shawn J. Goff

Câu trả lời:


26

Trình sshdnền trên máy chủ đang giới hạn số phiên trên mỗi kết nối mạng. Điều này được kiểm soát bởi MaxSessionstùy chọn trong /etc/ssh/sshd_config. Ngoài ra, MaxStartupstùy chọn có thể cần phải tăng lên nếu bạn sử dụng một số lượng lớn các phiên. (Xem man sshd_configđể biết thêm chi tiết.) Tùy chọn sửa đổi MaxSessionsgiới hạn đã được giới thiệu trong OpenSSH 5.1 và có vẻ như số đó đã được sửa trước đó ở mức 10. Nếu bạn vượt quá MaxSessionstrên máy chủ, bạn sẽ thấy sshd[####]: error: no more sessionstrong nhật ký của máy chủ.


4

Tôi gặp vấn đề này trên một máy chủ có phiên bản OpenSSH trước đó. Tôi kiểm soát máy chủ và tôi đã giải quyết vấn đề bằng cách tạo hai CNAME trong cấu hình được đặt tên của mình:

realhost.myexample.com.      IN  A       XXX.XXX.XXX.XXX
realhost2.myexample.com.     IN  CNAME   realhost.myexample.com.
realhost3.myexample.com.     IN  CNAME   realhost.myexample.com.

Sau đó, trong cấu hình máy khách ssh cục bộ của tôi:

ControlMaster auto
ControlPath ~/.ssh/%r_%p_%h

host realhost
hostname realhost.myexample.com

host realhost2
hostname realhost2.myexample.com

host realhost3
hostname realhost3.myexample.com

Câu lệnh ControlPath là vì vậy các tên ổ cắm điều khiển không bước lên nhau.

Đó là nó, nhưng để dễ quản lý, tôi đã viết một kịch bản trình bao cho 'ssh' ở phía máy khách. Nó hiểu rằng có 'nhóm' máy chủ (trong trường hợp này là realhost, realhost1, realhost2 bao gồm một nhóm). Khi phát hành 'sshwrapper realhost', nếu không có kênh mở, cả ba đều được mở và một phiên được bắt đầu. Lần tiếp theo, nó sẽ đếm các kết nối mở trên mỗi kênh và mở phiên mới trong kênh có ít kết nối nhất.

Với một máy chủ thật và hai máy chủ 'giả', tôi có thể kết nối 30 lần trước khi nhận được lỗi. Đăng nhập cực kỳ nhanh, ngoại trừ thời gian ban đầu mất một hoặc hai giây, vì cả ba kênh điều khiển đều được mở tại thời điểm đó.


Kịch bản nghe giống như một trình tiết kiệm thời gian thực và nó sẽ thực sự hữu ích. Nếu bạn vẫn còn có nó, bạn có phiền khi chia sẻ nó với công chúng không?
thefourtheye

Tôi không chắc nó thích hợp ở đây, vì nó không phải là câu trả lời cho một câu hỏi. Ngoài ra, tôi chỉ viết nó cho chính mình và nó chạy trên máy khách Mac (để đăng nhập vào máy chủ Linux của tôi). Mã phân tích cú pháp đầu ra 'ps' và sẽ cần phải được thay đổi để chạy trên Linux, do cú pháp 'ps' khác nhau.
joe

Đủ công bằng. Cảm ơn đã chia sẻ ý tưởng chung mặc dù.
thefourtheye

Tôi đã đặt tập lệnh tại moosiefinance.com:8081/sshm.zip.
joe

Tuyệt vời ... Cảm ơn rất nhiều ... Hãy để tôi trải qua điều đó
thefourtheye
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.