Android

Cách thiết lập đường hầm ssh (chuyển tiếp cổng)

Linux/Mac Tutorial: SSH Key-Based Authentication - How to SSH Without a Password

Linux/Mac Tutorial: SSH Key-Based Authentication - How to SSH Without a Password

Mục lục:

Anonim

Đường hầm SSH hoặc chuyển tiếp cổng SSH là phương pháp tạo kết nối SSH được mã hóa giữa máy khách và máy chủ thông qua đó các cổng dịch vụ có thể được chuyển tiếp.

Chuyển tiếp SSH rất hữu ích để vận chuyển dữ liệu mạng của các dịch vụ sử dụng giao thức không được mã hóa, chẳng hạn như VNC hoặc FTP, truy cập nội dung bị giới hạn địa lý hoặc bỏ qua tường lửa trung gian. Về cơ bản, bạn có thể chuyển tiếp bất kỳ cổng TCP nào và tạo lưu lượng truy cập qua kết nối SSH an toàn.

Có ba loại chuyển tiếp cổng SSH:

  • Giao nhận cảng địa phương. - Chuyển tiếp kết nối từ máy chủ đến máy chủ SSH và sau đó đến cổng máy chủ đích.Remote Port Forwarding. - Chuyển tiếp một cổng từ máy chủ lưu trữ đến máy chủ máy khách và sau đó đến cổng máy chủ đích. Chuyển tiếp cổng chuyển tiếp. - Tạo máy chủ proxy SOCKS cho phép giao tiếp qua một loạt các cổng.

, chúng tôi sẽ nói về cách thiết lập các đường hầm SSH được mã hóa cục bộ, từ xa và động.

Giao nhận cảng địa phương

Chuyển tiếp cổng cục bộ cho phép bạn chuyển tiếp một cổng trên máy cục bộ (ssh client) sang một cổng trên máy từ xa (máy chủ ssh), sau đó được chuyển tiếp đến một cổng trên máy đích.

Trong kiểu chuyển tiếp này, máy khách SSH lắng nghe trên một cổng nhất định và đường hầm bất kỳ kết nối nào đến cổng đó đến cổng được chỉ định trên máy chủ SSH từ xa, sau đó kết nối với một cổng trên máy đích. Máy đích có thể là máy chủ SSH từ xa hoặc bất kỳ máy nào khác.

Chuyển tiếp cổng cục bộ hầu hết được sử dụng để kết nối với dịch vụ từ xa trên mạng nội bộ như cơ sở dữ liệu hoặc máy chủ VNC.

Trong Linux, macOS và các hệ thống Unix khác để tạo chuyển tiếp cổng cục bộ chuyển tùy chọn -L cho máy khách ssh :

ssh -L LOCAL_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

Các tùy chọn được sử dụng như sau:

  • LOCAL_PORT - Số ip và số cổng máy cục bộ. Khi LOCAL_IP bị bỏ qua, máy khách ssh liên kết trên localhost. DESTINATION:DESTINATION_PORT - IP hoặc tên máy chủ và cổng của máy đích. SERVER_IP - Địa chỉ IP máy chủ và người dùng SSH từ xa.

Bạn có thể sử dụng bất kỳ số cổng nào lớn hơn 1024 dưới dạng LOCAL_PORT . Số cổng nhỏ hơn 1024 là cổng đặc quyền và chỉ có thể được sử dụng bởi root. Nếu máy chủ SSH của bạn đang nghe trên một cổng khác 22 (mặc định), hãy sử dụng tùy chọn -p .

Tên máy chủ đích phải được phân giải từ máy chủ SSH.

Giả sử bạn có máy chủ cơ sở dữ liệu MySQL chạy trên máy db001.host trên mạng nội bộ (riêng), trên cổng 3306 có thể truy cập từ máy pub001.host và bạn muốn kết nối bằng máy khách mysql cục bộ của mình với máy chủ cơ sở dữ liệu. Để làm như vậy, bạn có thể chuyển tiếp kết nối như vậy:

ssh -L 3336:db001.host:3306 [email protected]

Khi bạn chạy lệnh, bạn sẽ được nhắc nhập mật khẩu người dùng SSH từ xa. Sau khi nhập nó, bạn sẽ đăng nhập vào máy chủ từ xa và đường hầm SSH sẽ được thiết lập. Đó là một ý tưởng tốt để thiết lập xác thực dựa trên khóa SSH và kết nối với máy chủ mà không cần nhập mật khẩu.

Bây giờ nếu bạn trỏ máy khách cơ sở dữ liệu máy cục bộ của mình tới 127.0.0.1:3336 , kết nối sẽ được chuyển tiếp đến máy chủ MySQL db001.host:3306 thông qua máy pub001.host sẽ hoạt động như một máy chủ trung gian.

Bạn có thể chuyển tiếp nhiều cổng tới nhiều đích trong một lệnh ssh. Ví dụ: bạn có một máy chủ cơ sở dữ liệu MySQL khác đang chạy trên máy db002.host và bạn muốn kết nối với cả hai máy chủ từ máy khách cục bộ của mình, bạn sẽ chạy:

ssh -L 3336:db001.host:3306 3337:db002.host:3306 [email protected]

Để kết nối với máy chủ thứ hai, bạn sẽ sử dụng 127.0.0.1:3337 .

Khi máy chủ đích giống với máy chủ SSH thay vì chỉ định IP máy chủ đích hoặc tên máy chủ, bạn có thể sử dụng localhost .

Giả sử bạn cần kết nối với một máy từ xa thông qua VNC chạy trên cùng một máy chủ và nó không thể truy cập được từ bên ngoài. Lệnh bạn sẽ sử dụng là:

ssh -L 5901:127.0.0.1:5901 -N -f [email protected]

Tùy chọn -f cho lệnh ssh chạy trong nền và -N không thực hiện lệnh từ xa. Chúng tôi đang sử dụng localhost vì VNC và máy chủ SSH đang chạy trên cùng một máy chủ.

Chuyển tiếp cổng từ xa

Chuyển tiếp cổng từ xa ngược lại với chuyển tiếp cổng cục bộ. Nó cho phép bạn chuyển tiếp một cổng trên máy từ xa (máy chủ ssh) sang một cổng trên máy cục bộ (máy khách ssh), sau đó được chuyển tiếp đến một cổng trên máy đích.

Trong kiểu chuyển tiếp này, máy chủ SSH lắng nghe trên một cổng nhất định và đường hầm bất kỳ kết nối nào đến cổng đó đến cổng được chỉ định trên máy khách SSH cục bộ, sau đó kết nối với một cổng trên máy đích. Máy đích có thể là máy cục bộ hoặc bất kỳ máy nào khác.

Trong Linux, macOS và các hệ thống Unix khác để tạo chuyển tiếp cổng từ xa chuyển tùy chọn -R cho máy khách ssh :

ssh -R REMOTE_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

Các tùy chọn được sử dụng như sau:

  • REMOTE_PORT - IP và số cổng trên máy chủ SSH từ xa. Một REMOTE trống có nghĩa là máy chủ SSH từ xa sẽ liên kết trên tất cả các giao diện. DESTINATION:DESTINATION_PORT - IP hoặc tên máy chủ và cổng của máy đích. SERVER_IP - Địa chỉ IP máy chủ và người dùng SSH từ xa.

Chuyển tiếp cổng cục bộ chủ yếu được sử dụng để cấp quyền truy cập vào một dịch vụ nội bộ cho một ai đó từ bên ngoài.

Giả sử bạn đang phát triển một ứng dụng web trên máy cục bộ của mình và bạn muốn hiển thị bản xem trước cho nhà phát triển đồng nghiệp của mình. Bạn không có IP công cộng để nhà phát triển khác không thể truy cập ứng dụng qua Internet.

ssh -L 8080:127.0.0.1:3000 -N -f [email protected]

Lệnh trên sẽ khiến máy chủ ssh lắng nghe trên cổng 8080 và đường hầm tất cả lưu lượng truy cập từ cổng này đến máy cục bộ của bạn trên cổng 3000 .

Bây giờ, nhà phát triển đồng nghiệp của bạn có thể nhập the_ssh_server_ip:8080 trong trình duyệt của anh ấy / cô ấy và xem trước ứng dụng tuyệt vời của bạn.

Chuyển tiếp cổng động

Chuyển tiếp cổng động cho phép bạn tạo một ổ cắm trên máy cục bộ (ssh client) hoạt động như một máy chủ proxy SOCKS. Khi một máy khách kết nối với cổng này, kết nối được chuyển tiếp đến máy từ xa (máy chủ ssh), sau đó được chuyển tiếp đến một cổng động trên máy đích.

Bằng cách này, tất cả các ứng dụng sử dụng proxy SOCKS sẽ kết nối với máy chủ SSH và máy chủ sẽ chuyển tiếp tất cả lưu lượng truy cập đến đích thực tế của nó.

Trong Linux, macOS và các hệ thống Unix khác để tạo chuyển tiếp cổng động (SOCKS) chuyển tùy chọn -D cho máy khách ssh :

ssh -D LOCAL_PORT SSH_SERVER

Các tùy chọn được sử dụng như sau:

  • LOCAL_PORT - Số ip và số cổng máy cục bộ. Khi LOCAL_IP bị bỏ qua, máy khách ssh liên kết trên localhost. SERVER_IP - Địa chỉ IP máy chủ và người dùng SSH từ xa.

Một ví dụ điển hình về chuyển tiếp cổng động là đường hầm lưu lượng truy cập trình duyệt web thông qua máy chủ SSH.

Lệnh sau sẽ tạo đường hầm SOCKS trên cổng 9090 :

ssh -D 9090 -N -f [email protected]

Khi đường hầm được thiết lập, bạn có thể định cấu hình ứng dụng của mình để sử dụng nó. Bài viết này giải thích cách định cấu hình trình duyệt Firefox và Google Chrome để sử dụng proxy SOCKS.

Chuyển tiếp cổng phải được cấu hình riêng cho từng ứng dụng mà bạn muốn tạo đường hầm cho lưu lượng truy cập.

Thiết lập đường hầm SSH trong Windows

Người dùng Windows có thể tạo đường hầm SSH bằng ứng dụng khách PuTTY SSH. Bạn có thể tải PuTTY tại đây.

  1. Khởi chạy Putty và nhập Địa chỉ IP của máy chủ SSH vào trường Host name (or IP address) .

    Một cửa sổ mới yêu cầu tên người dùng và mật khẩu của bạn sẽ xuất hiện. Khi bạn nhập tên người dùng và mật khẩu, bạn sẽ đăng nhập vào máy chủ của mình và đường hầm SSH sẽ được bắt đầu.

    Thiết lập xác thực khóa chung sẽ cho phép bạn kết nối với máy chủ của mình mà không cần nhập mật khẩu.

Phần kết luận

Chúng tôi đã chỉ cho bạn cách thiết lập các đường hầm SSH và chuyển tiếp lưu lượng truy cập thông qua kết nối SSH an toàn. Để dễ sử dụng, bạn có thể xác định đường hầm SSH trong tệp cấu hình SSH của mình hoặc tạo bí danh Bash sẽ thiết lập đường hầm SSH.

bảo mật ssh