Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Máy Chủ Windows

Chuyển Tiếp Cổng SSH Native (Tunneling) Trên Windows 10

Trong bài viết này chúng tôi sẽ chỉ cách dùng máy chủ OpenSSH tích hợp sẵn trong Windows 10 để chuyển tiếp cổng qua SSH tunnel. Chuyển tiếp cổng SSH cho phép bạn tunnel (chuyển tiếp) cổng ứng dụng từ máy tính cục bộ đến máy chủ từ xa và ngược lại. Trước đây SSH tunneling chỉ dùng trong môi trường Linux/Unix, nhưng hôm nay bạn có thể dùng nó trong Windows 10/Windows Server 2016. Dưới đây là trường hợp sử dụng kết nối RDP qua SSH tunnel (cổng TCP 22) trên Windows.

SSH tunneling chủ yếu dùng khi bạn cần kết nối đến máy tính từ xa sau tường lửa. Ví dụ, bạn có Windows Server chỉ mở cổng SSH (TCP 22). Tất cả cổng khác bị chặn bởi tường lửa phần cứng hoặc Windows Firewall. Nhiệm vụ của bạn là kết nối đến Windows Server bằng RDP client. Có vẻ như không thể vì cổng Remote Desktop 3389 bị tường lửa chặn. Tuy nhiên, bạn có thể dùng kỹ thuật chuyển tiếp cổng qua SSH tunnel.

Dưới đây là các kịch bản sử dụng điển hình của SSH tunneling:

  • Local TCP forwarding là chuyển tiếp cổng cục bộ đến máy chủ từ xa;
  • Remote TCP forwarding là chuyển tiếp cổng từ xa đến máy tính cục bộ;
  • Double SSH tunnel kết nối máy tính không có địa chỉ IP công khai chuyên dụng sau NAT qua máy chủ SSH (nếu giải pháp OpenVPN không áp dụng).

Truy Cập RDP Qua SSH Tunnel (Local TCP Forwarding)

Ở chế độ này, bạn tạo một cổng TCP cục bộ trên máy tính của mình. Tất cả kết nối đến cổng này được chuyển tiếp đến cổng chỉ định trên máy chủ từ xa qua SSH tunnel. Trong ví dụ này, chúng ta sẽ tạo cổng cục bộ 8888, và kết nối đến nó sẽ được chuyển tiếp đến cổng RDP 3389 trên máy tính Windows từ xa. Sơ đồ kết nối chung như hình dưới.

Chuyển Tiếp Cổng SSH Native (Tunneling) Trên Windows 10

Để tạo SSH tunnel bằng SSH client tích hợp Windows 10 (là một phần của Windows từ Windows 10 1809 và Windows Server 2019), chạy lệnh:

ssh -L 8888:192.168.1.90:3389 root@192.168.1.90

Để SSH tunnel chạy nền, thêm tham số –f.

Chuyển Tiếp Cổng SSH Native (Tunneling) Trên Windows 10

Để kết nối đến desktop máy tính từ xa qua SSH tunnel, bạn cần kết nối đến cổng cục bộ 8888 của máy tính mình bằng RDP client (mstsc.exe):

127.0.0.1:8888

Chuyển Tiếp Cổng SSH Native (Tunneling) Trên Windows 10

Đăng nhập vào máy tính từ xa và làm việc an toàn trong phiên RDP (nhưng bạn nhớ rằng cổng 3389 vẫn bị tường lửa chặn). Bạn có thể dùng công cụ TCPView để xác nhận kết nối RDP là cục bộ (kết nối RDP được khởi tạo bởi SSH server chạy cục bộ).

Chuyển Tiếp Cổng SSH Native (Tunneling) Trên Windows 10

Lưu ý nếu bạn chuyển tiếp traffic ứng dụng không mã hóa, nó sẽ được truyền mã hóa qua mạng công cộng. Traffic như vậy sẽ được mã hóa ở một đầu kết nối SSH và giải mã ở đầu kia.

Các máy tính khác trong mạng cục bộ của bạn cũng có thể dùng chế độ này để kết nối đến RDP server ngay cả khi kết nối trực tiếp không được phép (cả qua SSH và qua RDP). Để làm điều đó, chúng phải kết nối qua RDP client đến cổng 8888 trên máy tính của bạn với SSH tunnel đã tạo:

mstsc.exe /v 10.10.1.220:8888

Chuyển Tiếp Cổng SSH Native (Tunneling) Trên Windows 10

Remote TCP Forwarding Đến Máy Tính Cục Bộ

Có một trường hợp sử dụng SSH tunnel khác — remote TCP forwarding. Sử dụng SSH tunnel, bạn có thể cho phép máy chủ từ xa truy cập cổng cục bộ trên máy tính của bạn hoặc cổng trên máy tính khác trong mạng cục bộ. Ví dụ, bạn muốn máy chủ bên ngoài (200.168.1.90) truy cập trang web Intranet của bạn (không công khai trên Internet). Để tạo reverse SSH tunnel, dùng lệnh:

ssh -R 8080:internalwww:80 user@200.168.1.90

Để truy cập trang internalwww từ máy chủ SSH từ xa, chỉ cần gõ địa chỉ này trong trình duyệt: https://localhost:8080

Trong tất cả phiên bản Windows, bạn có thể tạo quy tắc chuyển tiếp cổng bằng lệnh netsh interface portproxy command

Sử dụng SSH tunnel, bạn có thể xây dựng chuỗi chuyển tiếp cổng. Để bật/tắt SSH tunneling, thêm một trong các chỉ thị sau vào file config OpenSSH (%programdata%\ssh\sshd_config):

AllowStreamLocalForwarding yes
AllowTcpForwarding remote