2012-07-03 23 views
11

Tôi muốn tạo cổng nối tiếp khả dụng trên mạng. RFC-2217 cung cấp các phần mở rộng cho Telnet để vận chuyển thêm thông tin cổng nối tiếp như tốc độ, bit dữ liệu, bit dừng và đường bắt tay phần cứng.Giao thức cho cổng nối tiếp từ xa, với xác thực và mã hóa

Tuy nhiên, tôi muốn đảm bảo rằng không thể truy cập tự do vào bất kỳ ai trên mạng, vì vậy tôi muốn thực hiện xác thực và mã hóa. Telnet yếu về xác thực và không cung cấp mã hóa. SSH thường được ưu tiên hơn Telnet.

Có giao thức nào cho phép vận chuyển cổng nối tiếp qua SSH, tương tự như RFC-2217 không?

Tôi nhận ra một tùy chọn có thể là đường hầm Telnet + RFC-2217 thông qua đường hầm SSH. Đó là kỹ thuật đạt được, mặc dù trong điều kiện thực tế nó là một chút vụng về.

Zeroconf

Một câu hỏi khác là, làm thế nào có thể một cổng như được quảng cáo với Zeroconf DNS-SD? Ví dụ. làm thế nào có thể một cổng nối tiếp Telnet + RFC-2217, được điều chỉnh thông qua SSH, được quảng cáo với Zeroconf? (Đồng bằng Telnet + RFC-2217 có thể được quảng cáo như _telnetcpcd._tcp từ những gì tôi có thể nói.)

+0

Bất kỳ lý do để không chỉ cần chạy PuTTY trên cả hai đầu? http://superuser.com/questions/270793/connect-two-computers-together-via-a-rs232-serial-port –

+0

Nó dành cho một ứng dụng truyền thông vô tuyến thích hợp, và tôi muốn cho phép PC kết nối với modem radio qua mạng cục bộ, để truy cập quay số. Máy khách sau đó sẽ sử dụng một cổng nối tiếp ảo và các lệnh AT thông thường để quay số cuộc gọi dữ liệu. –

+0

RFC2217 qua SSH, như bạn đã đề xuất, có vẻ như là giải pháp hoàn hảo cho tôi. Tôi không chắc điều gì lúng túng về nó ... có vẻ như phù hợp. – Brad

Trả lời

3

Điều bạn muốn là kết nối qua mạng LAN được bảo mật.

Lý do tại sao bạn không tìm thấy bất kỳ dự án miễn phí nào thực hiện điều này đơn giản - hầu hết các dự án nguồn mở tách riêng bảo mật lớp vận chuyển khỏi giao thức (vì lý do chính đáng). Thay vì phát minh lại bánh xe cho mọi ứng dụng, bạn chỉ có thể sử dụng lại thành phần bảo mật (SSH trong trường hợp này) và áp dụng nó cho giao thức không an toàn của bạn (ví dụ như RFC-2217-compatible).

Chỉ cần sử dụng đường hầm SSH hoặc stunnel để đảm bảo kết nối. Đối với ứng dụng khách Windows, bạn có thể sử dụng com2com và cho các hệ thống * nix giống như ttyd. Ví dụ:

com2com không cần bắt đầu thủ công sau khi thiết lập ban đầu, vì vậy người dùng của bạn chỉ phải thiết lập đường hầm SSH (thông qua PuTTY).

  • com2com
  • socat, sử dụng ptyopenssl-listen bạn có thể làm được khá nhiều chính xác những gì bạn muốn (hơi mâu thuẫn với những gì tôi đã viết ở trên vì nó thực sự không thực hiện an ninh lớp truyền tải)
4

Tôi không chắc chắn rằng SSH đường hầm là như vụng về như bạn nghĩ:

-Wchủ: cổng
Yêu cầu đầu vào và đầu ra tiêu chuẩn trên máy khách được chuyển tiếp đến máy chủ trên cổng qua kênh bảo mật. Ngụ ý -N, -T, ExitOnForwardFailureClearAllForwardings và làm việc với Protocol version 2 chỉ.

Đây là những gì đường hầm một SMTP ngắn phiên trông giống như (input gõ in đậm):

$ ssh -W mail.server.com:25 [email protected] 
220 mail.server.com ESMTP 
Postfix 
ehlo foo.com 
250-mail.server.com 
250-PIPELINING 
250-SIZE 
250-ETRN 
250-AUTH LOGIN PLAIN 
250-STARTTLS 
250-ENHANCEDSTATUSCODES 
250-8BITMIME 
250 DSN 
quit 
221 2.0.0 Bye 

Không thiết lập riêng biệt lập một đường hầm và sau đó kết nối với cổng đó, chỉ cần đường ống đầu vào và đầu ra từ ssh quá trình.

0

SSH cung cấp cho "requesting a pseudo-terminal" với "pseudo-terminal encoded terminal modes". Nó cung cấp cho thiết lập tốc độ truyền, bit, chẵn lẻ, cấu hình bit dừng. Có thể đặt PARMRK để nhận lỗi khung và điều kiện ngắt. Tuy nhiên, có vẻ như giao thức SSH hiện thiếu bất kỳ lệnh nào để đặt điều kiện ngắt hoặc đặt đường dây phần cứng modem DTR và RTS hoặc để nhận các dòng phần cứng modem DSR, CTS, DCD và RING.

Xem: