chuyển tiếp cổng trên linux mà không cần root hoặc ssh


4

Tôi đã tự hỏi liệu có thể có được chuyển tiếp cổng mà không cần root hoặc ssh.

Hiện tại tôi làm

ssh -L 20080:othermachine:80 localhost

Sử dụng ssh có thể mang lại cho bạn những lợi ích nhất định như tạo đường hầm được mã hóa, v.v. Trong ví dụ trên tôi không làm như vậy nên sử dụng ssh có vẻ không cần thiết. Có cách nào dễ dàng hơn để làm điều này?

Tôi cho rằng không khó để tạo ra một chương trình đọc tất cả dữ liệu trên một ổ cắm và gửi nó đến một ổ cắm khác và ngược lại. Phải có một số công cụ thực hiện công việc đó tốt hơn tôi có thể viết.


Bạn sẽ không cần root cho ví dụ đó.
Arjan

1
Tôi nghĩ rằng tôi nên đã nói rõ hơn rằng tôi không có vấn đề cụ thể. Nó đã được nhiều hơn rằng mặc dù điều này đã làm việc, tôi nghĩ rằng phải có giải pháp khác có thể tốt hơn. (Về phần gốc, tôi có thể sử dụng chuyển tiếp cổng với iptables, nhưng điều đó sẽ yêu cầu root.)
BlackShift

Câu trả lời:


9

Tôi cũng thích ssh BECAUSE của mã hóa, nhưng ' socat ' cũng sẽ hoạt động tốt cho bạn.


Cảm ơn! chưa bao giờ nghe nói về socat, chương trình này có thể làm được nhiều hơn tôi từng mong đợi. Tôi chắc chắn tôi sẽ tìm thấy nhiều công dụng hơn cho nó hơn là chỉ chuyển tiếp cổng.
BlackShift

Đường hầm cổng liên tục tiêu chuẩn từ cổng 8880 trên localhost đến cổng 80 trên target.example.com : socat TCP4-LISTEN:8880,fork,reuseaddr TCP4:target.example.com:80. Nếu bạn muốn nó tồn tại sau khi bạn kết thúc phiên shell của mình, hãy gửi nó đến nền (Ctrl-Z) sau đó bgvà từ chối nódisown socal
Rolf

3

Bạn hỏi: Is there an easier way to do this? Câu trả lời đơn giản sẽ là 'không'. SSH làm những gì bạn cần và đó là một chương trình rất hiệu quả, được biết đến, rất hiệu quả với (tôi sẽ tưởng tượng) rất ít lỗi, nó có sẵn trên mọi nền tảng bạn có thể tưởng tượng và nó an toàn để khởi động. Bạn không nói rằng hiệu suất là một vấn đề, vì vậy tôi không thấy lý do tại sao không sử dụng SSH, cá nhân.

Nếu bạn muốn chuyển tiếp một cổng cục bộ sang một cổng trên một máy khác, bạn cần một cái gì đó sẽ xác thực trên máy chủ từ xa đó. Đó là SSH. Nếu bạn chỉ muốn gây rối với các cổng cục bộ, thì như đã đề cập, socatcó thể chỉ là những gì bạn đang tìm kiếm.


Không có lý do cụ thể để không sử dụng ssh tại thời điểm này, nhưng tôi muốn mở rộng bộ sưu tập các công cụ của mình và socat có vẻ rất mạnh mẽ. (akira là người đầu tiên đề xuất nó, vì vậy tôi đã kiểm tra câu trả lời của anh ấy.)
BlackShift

btw, ba lý do khi ssh không tối ưu: 1) nó không khả dụng (như trên điện thoại của tôi, nhưng tôi nghi ngờ tôi có thể cài đặt socat ở đó), 2) không sshd hoặc trong trường hợp của tôi một số lượng đăng nhập được phép hạn chế, 3) không có tài khoản trên máy từ xa (vì vậy không thể có đường hầm được mã hóa / nén)
BlackShift

Một trường hợp khác mà ssh không tối ưu là khi bạn di chuyển một lượng lớn dữ liệu và có khả năng xử lý hạn chế. Tải CPU được áp đặt bởi mã hóa của ssh là lớn trong trường hợp này và cũng làm chậm quá trình chuyển. Tuy nhiên, điều này không có nghĩa là bạn có thể bỏ qua bảo mật vì hiệu suất, tuy nhiên trong một số trường hợp, lớp bảo mật là không cần thiết (chẳng hạn như bạn đang liên lạc qua mạng riêng)
wojtow

1

Nếu những gì bạn đang làm việc và bạn không thấy bất kỳ vấn đề về hiệu suất, tôi sẽ không thay đổi bất cứ điều gì. Nếu bạn không chuyển một lượng lớn dữ liệu, nó sẽ không ảnh hưởng nhiều. Và nếu bạn là, ssh có thể nén dữ liệu, vì vậy bạn vẫn có thể tốt hơn.

Vấn đề duy nhất có thể là với độ trễ. Có vẻ như bạn đang lưu lượng truy cập http, vì vậy nó không đáng kể.


(Từ man ssh: Nén là mong muốn trên các dòng modem và các kết nối chậm khác, nhưng sẽ chỉ làm chậm mọi thứ trên các mạng nhanh .)
Arjan

Tôi thấy điều đó, nhưng không hoàn toàn đồng ý. Nó phụ thuộc vào tốc độ của mạng, tốc độ của mạng và lượng dữ liệu được di chuyển. Tôi đã có kinh nghiệm tốt khi sử dụng nó cho lượng dữ liệu lớn (nhiều gigabyte) qua mạng GigE sử dụng máy chủ nhanh.
KeithB


0

Dù bạn sử dụng công cụ nào: khi không sử dụng Windows thì bạn sẽ luôn luôn (và duy nhất ) cần chạy với các đặc quyền siêu người dùng khi sử dụng các cổng đặc quyền ("cổng nổi tiếng"). Vì vậy: khi sử dụng các cổng lên đến và bao gồm 1023.


2
chuyển tiếp đến một cổng thấp (đã nghe) không yêu cầu đặc quyền siêu người dùng, chỉ dành cho cổng chấp nhận (ví dụ là 10080 trong ví dụ của tôi).
BlackShift
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.