Sự khác biệt giữa ssh -L đến -D


52

Tôi đang cố gắng để hiểu sự khác biệt giữa ssh -L đến -D. Có bất cứ điều gì khác ngoại trừ điều đó -D chỉ là SOCKS không?

Cảm ơn!

Câu trả lời:


53

ssh -Lmở một cảng địa phương. Mọi thứ bạn gửi đến cổng đó đều được đặt qua kết nối ssh và rời khỏi máy chủ. Nếu bạn làm, ví dụ, ssh -L 4444:google.com:80nếu bạn mở http://localhost:4444trên trình duyệt của mình, bạn sẽ thực sự thấy trang của google.

ssh -Dmở một cổng cục bộ, nhưng nó không có điểm cuối cụ thể như với -L. Thay vào đó, nó giả vờ là một proxy SOCKS. Nếu bạn mở, ví dụ, ssh -D 7777khi bạn bảo trình duyệt của mình sử dụng localhost:7777làm proxy SOCKS, mọi thứ yêu cầu trình duyệt của bạn đều đi qua đường hầm ssh. Đối với internet công cộng, dường như bạn đang duyệt từ máy chủ ssh của bạn thay vì từ máy tính của bạn.


6
Một chi tiết quan trọng về -L là bạn có thể liên kết một cổng cục bộ chỉ để sử dụng cục bộ, ví dụ localhost: 80: remotehost: 8080, nhưng bạn cũng có thể liên kết cổng đó cho bất kỳ ai khác. Vì vậy, bạn có thể làm cho một máy trong mạng cục bộ của bạn cung cấp quyền truy cập vào một máy từ xa bằng đường hầm mà không có bất kỳ máy cục bộ nào biết về điều này.
splititherzero

@dividitherzero Tôi gặp khó khăn khi hình dung những gì bạn đang mô tả
Michael Dorst

@MichaelDorst Ý tôi là câu này từ trang manpage:The bind_address of “localhost” indicates that the listening port be bound for local use only, while an empty address or ‘*’ indicates that the port should be available from all interfaces.
splititherzero

ssh -L 4444:google.com:80không hoạt động đối với tôi, nó yêu cầu một tham số khác để đăng nhập, như user@example.com
Saman Mohamadi

6

Trong SSH, -Dchỉ định chuyển tiếp cổng cấp ứng dụng động động cục bộ của địa phương.

SSH -D [bind_address:]port

Chỉ định chuyển tiếp cổng cấp độ ứng dụng động động cục bộ. Điều này hoạt động bằng cách phân bổ một ổ cắm để nghe cổng ở phía cục bộ, tùy chọn ràng buộc với bind_address được chỉ định. Bất cứ khi nào kết nối được thực hiện với cổng này, kết nối sẽ được chuyển tiếp qua kênh bảo mật và sau đó giao thức ứng dụng được sử dụng để xác định nơi kết nối từ máy từ xa. Hiện tại các giao thức SOCKS4 và SOCKS5 được hỗ trợ và ssh sẽ hoạt động như một máy chủ SOCKS. Chỉ root mới có thể chuyển tiếp các cổng đặc quyền. Chuyển tiếp cổng động cũng có thể được chỉ định trong tệp cấu hình.

Địa chỉ IPv6 có thể được chỉ định bằng một cú pháp thay thế: cổng [bind_address /] hoặc bằng cách đặt địa chỉ trong dấu ngoặc vuông.

Chỉ có siêu người dùng mới có thể chuyển tiếp các cổng đặc quyền. Theo mặc định, cổng cục bộ bị ràng buộc theo cài đặt GatewayPorts. Tuy nhiên, một bind_address rõ ràng có thể được sử dụng để liên kết kết nối đến một địa chỉ cụ thể. Bind_address của khu vực localhost trực tuyến chỉ ra rằng cổng nghe chỉ bị ràng buộc chỉ sử dụng cục bộ, trong khi một địa chỉ trống hoặc '*' chỉ ra rằng cổng phải có sẵn từ tất cả các giao diện.

Ngoài ra, ssh -LChỉ định rằng cổng đã cho trên máy chủ (máy khách) cục bộ sẽ được chuyển tiếp đến máy chủ và cổng đã cho ở phía từ xa.

SSH -L [bind_address:]port:host:hostport

Chỉ định rằng cổng đã cho trên máy chủ cục bộ (máy khách) sẽ được chuyển tiếp đến máy chủ và cổng đã cho ở phía xa. Điều này hoạt động bằng cách phân bổ một ổ cắm để nghe cổng ở phía cục bộ, tùy chọn ràng buộc với bind_address được chỉ định. Bất cứ khi nào kết nối được thực hiện với cổng này, kết nối sẽ được chuyển tiếp qua kênh bảo mật và kết nối được thực hiện để lưu trữ cổng máy chủ từ máy từ xa. Chuyển tiếp cổng cũng có thể được chỉ định trong tệp cấu hình. Địa chỉ IPv6 có thể được chỉ định bằng một cú pháp thay thế: [bind_address /] port / host / hostport hoặc bằng cách đặt địa chỉ trong ngoặc vuông.

Chỉ có siêu người dùng mới có thể chuyển tiếp các cổng đặc quyền. Theo mặc định, cổng cục bộ bị ràng buộc theo cài đặt GatewayPorts. Tuy nhiên, một bind_address rõ ràng có thể được sử dụng để liên kết kết nối đến một địa chỉ cụ thể. Bind_address của khu vực localhost trực tuyến chỉ ra rằng cổng nghe chỉ bị ràng buộc chỉ sử dụng cục bộ, trong khi một địa chỉ trống hoặc '*' chỉ ra rằng cổng phải có sẵn từ tất cả các giao diện.

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.