Nội dung bài viết
#

SSH Tunnel là gì? Cách thiết lập SSH Tunneling trên Windows

Nội dung bài viết

    SSH Tunneling là một trong những giao thức được nhiều người tin dùng bởi tính khả dụng cao và cách thiết lập đơn giản.

    Vậy câu hỏi đặt ra là:

    • SSH Tunneling là gì?
    • Có mấy loại SSH Tunneling
    • Thiết lập SSH Tunneling trong Windows như thế nào?

    Trong bài viết dưới đây chúng tôi sẽ thông tin rõ hơn về SSH Tunneling để bạn có thể áp dụng khi cần thiết.

    SSH Tunneling là gì?

    SSH Tunneling la gi

    SSH Tunneling hay còn gọi là đường hầm SSH hoặc chuyển tiếp cổng SSH. Phương pháp hữu ích này sẽ giúp người dùng tạo kết nối SSH đã được mã hóa giữa Client với Server. Thông qua đó bạn có thể chuyển tiếp các cổng dịch vụ như TCP/IP và đảm bảo đường truyền đó luôn được an toàn.

    Với những dịch vụ sử dụng giao thức không được mã hóa sẽ rất cần tới SSH Tunneling để vận chuyển dữ liệu mạng, chẳng hạn như VNC hay FTP. Ngoài ra giao thức này sẽ giúp bạn truy cập những nội dung bị giới hạn về mặt địa lý hoặc được bảo vệ bằng tường lửa.

    Nói chung với SSH Tunneling bạn sẽ chuyển tiếp bất cứ cổng TCP nào và tạo đường dẫn lưu lượng một cách nhanh chóng và bảo mật cao.

    Các loại SSH Tunneling

    Chuyển tiếp cổng SSH gồm có ba loại: Local Port Forwarding, Remote Port Forwarding, Dynamic Port Forwarding. Mỗi loại đều được sử dụng với các mục đích khác nhau, cụ thể:

    Local Port Forwarding

    Bạn sẽ chuyển tiếp một port ở máy cục bộ (SSH Client) tới một port trên máy từ xa (SSH Server) khi sử dụng Local Port Forwarding. Tiếp theo port này sẽ được chuyển tiếp và được một port ở máy đích tiếp nhận. Máy đích là SSH Server hoặc một máy bất kì.

    Phần lớn khi cần kết nối dịch vụ từ xa trên mạng nội bộ người dùng sẽ sử dụng Local Port Forwarding ví dụ như Server VNC hoặc cơ sở dữ liệu. Với những hệ điều hành như macOS, Linux hay các hệ thống Unix khác để tạo Local Port Forwarding hãy chuyển tùy chọn –L cho SSH Client:

    {{EJS0}}

    Các tùy chọn gồm:

    • [LOCAL_IP:]LOCAL_PORT: địa chỉ IP cục bộ và số cổng.
    • DESTINATION:DESTINATION_PORT: IP hoặc tên Server và cổng của máy đích.
    • [USER@]SERVER_IP: người dùng SSH từ xa và IP của Server.

    Bạn hãy sử dụng số cổng dưới dạng file LOCAL_PORT và bắt cuộc phải lớp hơn 1024. Những cổng nhỏ hơn 1024 là cổng đặc quyền và chỉ quyền root mới được phép dùng. Theo mặc định SSH lắng nghe trên cổng 22, nếu như SSH của bạn lắng nghe ở cổng khác hãy dùng tùy chọn -p [PORT_NUMBER].

    Ví dụ như trên mạng nội bộ của bạn có máy chủ cơ sở dữ liệu MySQL đang chạy ở máy db001.host với cổng 3306 và bạn có thể truy cập được nó thông qua máy pub001.host. Lúc này bạn có thể sử dụng MySQL Client của máy cục bộ để kết nối với máy chủ cơ sở dữ liệu bằng lệnh:

    {{EJS1}}

    Lệnh được chạy bạn nhận được lời nhắc nhập mật khẩu người dùng SSH từ xa. Sau khi nhập xong SSH Tunneling được thiết lập và bạn được phép truy cập vào Server từ xa.

    Lúc này thông qua pub001.host kết nối sẽ chuyển đến db001.host:3306 MySQL Server nếu bạn trỏ ứng dụng khách cơ sở dữ liệu máy cục bộ của mình tới 127.0.0.1:3336.

    Bạn có thể dùng 1 lệnh SSH để chuyển tiếp nhiều port tới nhiều đích khác nhau. Chẳng hạn như bạn có thêm một máy chủ cơ sở dữ liệu MySQL chạy ở db002.host và bạn muốn dùng MySQL Client cục bộ để kết nối với cả hai Server, lệnh cần chạy là:

    {{EJS2}}

    Bạn hãy dùng 127.0.0.1:3337 để kết nối với Server thứ 2.

    Bạn có thể dùng localhost thay cho IP hoặc tên Server đích khi Server đích giống với SSH Server.

    Bạn cần sử dụng lệnh sau khi muốn kết nối với một máy từ xa thông qua VNC chạy trên 1 Server và không cho phép truy cập từ bên ngoài:

    {{EJS3}}

    Hãy kiểm tra cấu hình SSH Server từ xa khi bạn gặp sự cố trong quá trình thiết lập SSH Tunneling và tất nhiên để chuyển tiếp được cho phép thì cần đảm bảo “AllowTcpForwarding” không được đặt thành “no”.

    Remote Port Forwarding

    Ngược lại với Local Port Forwarding là Remote Port Forwarding. Với Remote Port Forwarding người dùng được phép chuyển một port từ SSH Server tới SSH Client và Port này sẽ được chuyển tới một Port ở máy đích. Ở những hệ điều hành như Linux, macOS hay các hệ thống Unix khác bạn hãy chuyển tùy chọn –R cho SSH Client để thiết lập Remote Port Forwarding:

    {{EJS4}}

    Các tùy chọn gồm:

    • [REMOTE:]REMOTE_PORT: IP và số cổng của SSH Server từ xa.
    • DESTINATION:DESTINATION_PORT: IP hoặc tên Server và cổng của máy đích.
    • [USER@]SERVER_IP: Địa chỉ IP của Server và người dùng SSH từ xa.

    Remote Port Forwarding có chức năng chính là cấp quyền để người ngoài có thể truy cập vào dịch vụ nội bộ. Ví như bạn muốn hiển thị cho đồng nghiệp bản xem trước của một ứng dụng web bạn đang phát triển ở trên máy cục bộ của mình. Trong trường hợp này, nếu bạn có quyền truy cập SSH Server từ xa thì chuyển tiếp Port từ xa bằng lệnh:

    {{EJS5}}

    Ngay sau khi nhập lệnh trên, SSH Server sẽ lắng nghe trên Port 8080 và chuyển lưu lượng tới Port 3000 thuộc máy cục bộ của bạn. Để xem bản demo, đồng nghiệp chỉ cần truy cập trình duyệt và nhập the_ssh_server_ip:8080.

    Để đảm bảo bạn không gặp sự cố khi thiết lập Remote Port Forwarding bạn cần chắc chắn rằng trong SSH Server từ xa “GatewayPorts” được đặt “yes”.

    Dynamic Port Forwarding

    Bạn sẽ tạo được một kết nối socket trên máy cục bộ (SSH Client) khi sử dụng Dynamic Port Forwarding và socket này hoạt động như một Server proxy SOCKS. Một khi Client kết nối với Port này thì kết nối sẽ được chuyển tiếp tới SSH Server và sau đó được chuyển tới một Dynamic Port (cổng Dynamic) ở máy đích.

    Thông qua Dynamic Port Forwarding, toàn bộ ứng dụng dùng proxy SOCKS được kết nối thành công với SSH Server và ngay sau đó tất cả lưu lượng truy cập sẽ được SSH Server chuyển tới đích thực tế của nó.

    Để tạo Dynamic port forwarding (SOCKS) trong Linux, macOS hay các hệ thống Unix bạn cần chuyển tùy chọn –D cho SSH Client:

    {{EJS6}}

    Các tùy chọn gồm:

    • [LOCAL_IP:]LOCAL_PORT: Địa chỉ IP máy cục bộ và số cổng.
    • [USER@]SERVER_IP: Địa chỉ IP Server và người dùng SSH từ xa.

    Tạo đường hầm lưu lượng truy cập trình duyệt web thông qua SSH Server là ví dụ điển hình cho Dynamic port forwarding. Để tạo SOCKS tunnel ở cổng 9090 bạn cần tạo lệnh sau:

    {{EJS7}}

    Thiết lập SSH Tunneling trong Windows

    Bạn có thể thiết lập SSH Tunneling trong Windows bằng ứng dụng Client PuTTY SSH. Các bước thực hiện cụ thể:

    Bước 1: Tải PuTTY ở link.

    Bước 2: Khởi chạy PuTTY và nhập địa chỉ IP của SSH Server vào Host name.

    Thiet lap SSH Tunneling trong Windows-1

    Bước 3: Trong Connection Menu mở rộng SSH và chọn Tunnels.

    Bước 4: Tùy chọn Local nếu muốn thiết lập cục bộ, Remote cho điều khiển từ xa hoặc Dynamic cho chuyển tiếp cổng động.

    Bước 5: Nhập cổng chuyển tiếp cục bộ vào Source Port, nhập máy chủ đích và IP vào Destination nếu thiết lập Local Port Forwarding, ví dụ: localhost:5901. Nhập cổng chuyển tiếp SSH Server từ xa vào Source Port, nhập máy chủ đích và IP vào Destination nếu thiết lập Remote Port Forwarding. Riêng với Dynamic Port Forwarding bạn chỉ cần nhập cổng SOCKS cục bộ vào Source Port.

    Thiet lap SSH Tunneling trong Windows-2

    Bước 6: Nhất nút Add.

    Thiet lap SSH Tunneling trong Windows-3

    Bước 7: Để lưu cài đặt bạn quay lại trang Session. Nhập tên phiên vào Saved Session và click vào Save.

    Thiet lap SSH Tunneling trong Windows-4

    Bước 8: Chọn phiên đã Save và nhấp vào Open để đăng nhập vào Server từ xa.

    Thiet lap SSH Tunneling trong Windows-5

    Bước 9: Một cửa sổ sẽ hiển thị yêu cầu nhập tên người dùng và mật khẩu. Bạn hoàn thành việc nhập mật khẩu và tên người dùng sẽ đăng nhập thành công vào Server của mình và lúc đó SSH Tunneling được bắt đầu.

    Bước 10: Muốn kết nối nhanh với Server của mình mà không cần nhập mật khẩu bạn hãy thực hiện thiết lập xác thực public key.

    Tổng kết về SSH Tunnel

    Trên đây chúng tôi đã chỉ cho bạn cách thiết lập SSH Tunneling để chuyển tiếp lưu lượng an toàn, bảo mật. Nếu còn gặp bất cứ vướng mắc gì, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

    P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.

    Thuê Cloud Server tại BKHOST

    Giảm giá cực sâu, chất lượng hàng đầu. Đăng ký ngay hôm nay:

    cloud server

    Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
    Bình luận
    Trượt lên đầu trang
    Miễn phí cước gọi
    Bạn đã hài lòng với trải nghiệm trên Bkhost.vn?
    Cảm ơn lượt bình chọn của bạn, Chúc bạn 1 ngày tốt lành !