Tôi có hai máy, một chạy Windows và một chạy Ubuntu và một ứng dụng chạy trên Ubuntu kết nối với đối tác máy chủ chạy cục bộ hoặc từ xa. Máy chủ đang chạy từ xa trên Windows và tôi đang cố gắng làm cho ứng dụng khách trên Ubuntu tin rằng máy chủ thực sự đang chạy cục bộ bằng cách chuyển tiếp cổng thích hợp (tức là 5555) từ Windows sang Ubuntu. Sau đó tôi nói với ứng dụng khách kết nối cục bộ với 127.0.0.1 trên cổng cụ thể mà tôi đã đặt. Khi điều này xảy ra, tôi nhận được lỗi sau trong thiết bị đầu cuối của mình:
C:\>debug1: Connection to port 5555 forwarding to localhost port 5555 requested.
debug2: fd 9 setting TCP_NODELAY
debug2: fd 9 setting 0_NONBLOCK
debug3: fd 6 is 0_NONBLOCK
debug1: channel 3: new [direct-tcpip]
buffer_get_ret: trying to get more bytes 4 than in buffer 0
buffer_get_string_ret: cannot extract length
buffer_get_string: buffer error
Tại thời điểm này, kết nối SSH bị chấm dứt, đưa tôi trở lại dấu nhắc thiết bị đầu cuối thông thường. Kiến thức về SSH của tôi bị giới hạn khá nhiều khi kết nối với một máy khác để điều khiển từ xa; cổng chuyển tiếp là mới đối với tôi vì vậy bất kỳ cái nhìn sâu sắc là rất đánh giá cao!
Cập nhật: Tôi đã giải quyết vấn đề bằng cách SSH vào máy Ubuntu từ máy Windows bằng chuyển tiếp cổng từ xa. Điều này thực sự hoàn thành chính xác điều tương tự như những gì tôi đã cố gắng trước đây. Cách này không tạo ra lỗi hoặc ngắt kết nối khi tôi kết nối ứng dụng khách trên máy Ubuntu với ứng dụng máy chủ đang chạy trên Windows.
Mặc dù điều này tất nhiên làm tôi hạnh phúc, nhưng khi tôi hoàn thành mục tiêu của mình, bây giờ tôi muốn tìm hiểu tại sao cách thứ hai này hoạt động (chuyển tiếp cổng từ Windows sang Ubuntu, do Windows khởi tạo) và cách thứ nhất không (chuyển tiếp cổng cục bộ Windows sang Ubuntu, được khởi xướng bởi Ubuntu).
ssh
đến máy chủ Windows từ Ubuntu với ssh user@remotehost
?