2010-02-11 22 views
6

mỗi ngày tôi gặp một hiện tượng rất lạ."ssh example.com" treo nhưng "ssh example.com bash -i" không

Từ kết nối internet đại học của tôi, sshing tới máy của tôi ("ssh example.com") hoạt động mà không gặp bất kỳ sự cố nào.

Từ adsl nhà của tôi, "ssh example.com" giao diện điều khiển của tôi bị mắc kẹt với tin nhắn này:

debug1: Server accepts key: pkalg ssh-rsa blen 533 
debug1: Enabling compression at level 6. 
debug1: Authentication succeeded (publickey). 
debug1: channel 0: new [client-session] 
debug1: Requesting [email protected] 
debug1: Entering interactive session. 

Đôi khi nó có thể cho tôi vào nhưng trong hầu hết các trường hợp không. Điều thú vị là nếu tôi thực thi "ssh example.com bash -i", tôi đã đăng nhập ngay lập tức.

Trả lời

11

Cuối cùng tôi đã tìm thấy nguồn gốc của vấn đề. Nó phải làm với các loại gói dịch vụ SSH (ToS) TCP.

Khi bạn yêu cầu một ssh teminal thường xuyên, ssh đặt loại gói dịch vụ TCP (ToS) thành "tương tác". Bộ định tuyến của tôi trong khu nhà của tôi chặn các loại gói này!

Sử dụng netcat, các gói TCP đường hầm không nhận được loại chỉ thị dịch vụ nào. Vì vậy, nếu bạn tunnel tất cả lưu lượng ssh của bạn thông qua netcat, bạn thiết lập lại ToS của các gói TCP thành các gói mặc định.

Trong .ssh/config, bạn phải thiết lập:

Host *.example.com 
    ProxyCommand nc %h %p 

Vì vậy, mỗi lần bạn cố gắng để ssh vào example.com, netcat sẽ được gọi và ý chí hầm các gói.

0

Sự khác biệt giữa hai trường hợp là "bash -i" không cung cấp cho bạn vỏ đăng nhập mà chỉ chạy ssh. Bạn có thể "man bash" để biết chi tiết về "shell đăng nhập" là gì, nhưng điều chính là nó chạy/etc/profile và .bash_profile của bạn. Có một cái nhìn trong những tập tin cho bất cứ điều gì mà có thể gây ra một vấn đề.

0

Có thể máy chủ không hoạt động.

1

Tôi vừa gặp sự cố tương tự. Hãy thử đăng nhập bằng một ứng dụng khách ssh khác để biết thêm thông tin. Trong khi máy khách dòng lệnh linux không quay trở lại với bất kỳ thông điệp hữu ích nào, Putty đã trở lại với "máy chủ từ chối phân bổ pty". Tôi đã sửa nó bằng mkdir/dev/pts và mount -a. Làm thế nào nó có được giấu ở nơi đầu tiên tôi ít chắc chắn về.

BTW, bash -l sẽ hoạt động giống như vỏ đăng nhập, do đó bạn có thể chứng minh đề xuất của Peter Westlake chính xác hoặc không chính xác trong trường hợp của bạn khá dễ dàng.

8

Tính đến OpenSSH 5.7, bạn chỉ có thể thêm video này vào tập tin cấu hình ssh của bạn (hoặc ~/.ssh/config hoặc/etc/ssh/ssh_config):

 
Host * 
    IPQoS 0x00 

Đây là một cách hơn trực tiếp đến làm việc xung quanh vấn đề Asterios xác định.

Các vấn đề liên quan