Chuyển hướng các cổng qua SSH

Đôi khi chúng ta cần truyền dữ liệu qua một ổ cắm giữa các máy khác nhau, chẳng hạn như kết nối Telnet, tải xuống tệp FTP, truy vấn SQL hoặc bất kỳ kiểu truyền nào khác.

Dữ liệu đó truyền thô qua mạng, vì vậy không an toàn, có nghĩa là chúng có thể bị chặn bởi bất kỳ nút nào nằm trên đường dẫn giữa điểm gốc và điểm đến, nghĩa là ăn cắp.

Chúng tôi không thể ngăn việc thu thập dữ liệu này, nhưng những gì chúng tôi có thể ngăn chặn là nó được bên thứ ba thông dịch và hiểu, mã hóa giao tiếp.

SSH là công cụ cho phép chúng tôi làm kết nối an toàn giữa các máy. Công dụng phổ biến nhất của nó là kết nối từ xa với trình thông dịch lệnh.

Tuy nhiên, nó cung cấp các khả năng khác, chẳng hạn như tạo đường hầm được mã hóa giữa các máy khác nhau.
Giả sử chúng ta muốn telnet từ host1 sang host2:

host1$ telnet host2

Giao tiếp này hoàn toàn mở và có thể đánh chặn. Để bảo vệ nó, chúng tôi sẽ chuyển hướng một cổng được chọn tùy ý (ví dụ: 5000) trên máy chủ 1 đến cổng 23 (telnet) trên máy chủ 2.

Bằng cách này, chúng ta sẽ nhận được tất cả dữ liệu được gửi đến cổng 5000 của host1 để di chuyển được mã hóa qua đường hầm mà ssh mở qua cổng 22 của host2 và sau đó được chuyển hướng đến cổng 23 của host2, do đó sẽ đến đích cuối cùng của nó.

Để làm điều này, chúng ta cần biết tên người dùng và mật khẩu của host2.

Để mở đường hầm, chúng tôi viết:

host1$ ssh -R 5000:localhost:23 usuariohost2@host2

O tốt:

host1$ ssh -L 5000:host2:23 usuariohost2@host2

Cả hai tùy chọn đều tương đương. Để thiết lập kết nối telnet, chúng tôi không còn tham chiếu đến host2 mà là cổng được chọn trên host1:

host1$ telnet localhost 5000

Với điều này, chúng tôi đảm bảo bất kỳ thông tin liên lạc nào, dù là telnet hay cách khác. Tìm hiểu kỹ hơn một chút chúng ta sẽ thấy rằng nhờ sức mạnh của SSH Những chuyển hướng này cũng có thể được thực hiện tới các máy thứ ba, điều này sẽ cho phép chúng tôi rằng với một điểm vào duy nhất, chúng tôi có thể truy cập an toàn từ toàn bộ mạng LAN sang một mạng LAN khác.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   nano dijo

    Lý thuyết trông cực kỳ thú vị, nhưng sẽ còn thú vị hơn nếu chúng ta nhìn thấy một trường hợp thực tế.

    Nhưng sự thật là, dù ngắn nhưng tôi rất thích bài báo.

    1.    bình thường dijo

      có thể nhìn vào wiki bạn sẽ có cảm hứng https://wiki.archlinux.org/index.php/Secure_Shell#Forwarding_other_ports
      và tương tự, nhưng phần autossh https://wiki.archlinux.org/index.php/Secure_Shell#Autossh_-_automatically_restarts_SSH_sessions_and_tunnels
      Trên thực tế, bất cứ thứ gì bạn có thể gửi bằng ssh, có thể là truyền trực tuyến, kết nối với máy chủ. Vân vân. vì lý do x mà bạn muốn mã hóa chúng.
      và các quy tắc securecrt

  2.   Tesla dijo

    Tôi đôi khi sử dụng SSH ở mức rất cơ bản. Cổng mặc định là 22, phải không?

    Vì vậy, nếu tôi hiểu chính xác, máy tính của tôi là máy chủ 1 và máy tôi muốn kết nối với máy chủ 2, đường hầm này sẽ tạo kết nối giữa cổng 5000 và cổng 23 của nó, và sau đó kết thúc trên cổng 22?

    Tại sao lý do chuyển đổi cổng? Bạn có thể tạo đường hầm với cổng 22 không?

    Bài viết rất thú vị. Giống như nano, tôi còn muốn nhiều hơn nữa!

    1.    Getafix dijo

      SSH thực sự sử dụng cổng 22 theo mặc định (mặc dù nó có thể được thay đổi). Cổng này là cổng sẽ được sử dụng cho giao tiếp thực tế giữa hai máy chủ. Đây là cái mà bạn phải đảm bảo rằng nó đang mở và không có tường lửa nào cắt nó. Nhưng đối với người dùng, nó hoàn toàn minh bạch. Bạn có thể quên nó. Trong ví dụ, chuyển hướng là giữa các cổng 5000 và 23. Hai cổng đó là những cổng duy nhất bạn phải lo lắng. Người dùng sẽ thấy rằng mọi thứ anh ta gửi đến cổng 5000 của máy chủ của anh ta xuất hiện ở 23 của máy chủ đích.
      Rõ ràng, mỗi người dùng có thể chuyển hướng các cổng mà họ cho là phù hợp.

      Cảm ơn cho ý kiến ​​của bạn. Đây là bài đăng đầu tiên của tôi và ý kiến ​​của bạn sẽ giúp làm cho bài tiếp theo tốt hơn.

  3.   eliotime3000 dijo

    Điều đó cũng có thể được thực hiện với VPS?

  4.   thợ săn dijo

    Ok đây là trường hợp của tôi, PC1 có quyền truy cập vào một máy chủ, nhưng PC2 thì không, cả hai đều kết nối bằng ssh, tôi muốn có quyền truy cập trong PC2, nhưng tôi chuyển hướng cổng nào của PC1? nếu thực sự điều tôi muốn là truy cập cổng máy chủ từ PC2 và các gói tin có PC1 làm IP nguồn của chúng. tôi có hiểu không

    1.    Getafix dijo

      Bạn làm cho mình hiểu. Trong trường hợp này, bạn cần PC1 chuyển hướng một cổng của PC2 đến cổng 22 của máy chủ:

      PC2 $ ssh -L 5000: Máy chủ: 22 người dùng PC1 @ PC1

      và giữ kết nối này mở, từ một thiết bị đầu cuối khác:

      PC2 $ ssh userServer @ localhost -p 5000

      và bạn đã ở bên trong.

      1.    thợ săn dijo

        Cuối cùng là một giải pháp chức năng !! Cảm ơn bạn Getafix, bạn đã cho tôi một thế giới đầy tiềm năng !!

        1.    Getafix dijo

          Tôi rất vui!

  5.   sống động dijo

    Excelente artículo. Bienvenido a DesdeLinux ????

    Và phải làm gì nếu chúng ta có 22 bị chặn? CƯỜI LỚN..

    1.    Getafix dijo

      Cảm ơn elav.
      Nếu cổng 22 của bạn bị chặn, mmmm, chúng tôi sẽ phải tìm giải pháp thay thế để hack tường lửa XD

    2.    eliotime3000 dijo

      Và tệ nhất (giả thuyết): nó bị nhà cung cấp VPS chặn.

  6.   IGA dijo

    Tôi vừa làm một bài kiểm tra cách đây vài giờ với câu hỏi về nó 😛

  7.   Mario dijo

    Tôi không nói điều đấy:
    host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
    nó tương đương với dòng lệnh khác ... dòng lệnh có ký tự -L.
    Vì -R chỉ ra rằng cổng được mở cho các kết nối mới nằm ở phía từ xa, nghĩa là ở phía máy chủ ssh của bạn; trong khi -L mở một cổng ở phía Cục bộ, ở phía máy khách để nhận các kết nối mới.

    Bản dịch của dòng:
    host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
    Nó sẽ như thế này: Đang ở trên host1, kết nối với máy chủ ssh (cổng 22) của host2 với người dùng của tôi là userhost2 và chuyển tiếp các kết nối được tạo trên cổng 5000 từ xa của host2 đến cổng 23 trên host1 (localhost của tôi)

    Nếu không, hãy sửa lại cho tôi! 😉

    -

    Mặt khác ... nếu một máy chủ đã chặn sự xâm nhập của các kết nối đến cổng 22, tức là chúng tôi không thể kết nối từ xa với máy chủ ssh; những gì có thể được thực hiện là; từ máy chủ (một người bạn sysadmin đằng sau tường lửa của hệ thống host2 từ xa) một dòng lệnh được thực thi:

    host2 $ nohup ssh -fN -R 6000: localhost: 22 userhost1 @ host1

    -f chuyển sang nền
    -N không thực hiện bất kỳ lệnh nào trên điều khiển từ xa
    nohup ngăn việc thực thi lệnh bị gián đoạn khi đăng xuất

    host1 $ ssh userhost2 @ localhost -p 6000

    Bằng cách này, từ host1, chúng tôi tạo một kết nối đến localhost (cùng một host1) trên cổng 6000 sẽ chuyển tiếp kết nối đến cổng 22 của máy chủ hệ thống từ xa2, trong đó chúng tôi sẽ đăng nhập bằng máy chủ người dùng2.

    Điều này sẽ cho phép (tôi không thử, nhưng có vẻ như nó hoạt động) đăng nhập vào một máy chủ ssh bị chặn bởi firewal với một chút trợ giúp từ bên trong! 😀

    Cái sau tôi đọc từ một lời giải thích được thực hiện trên tạp chí The Geek Stuff
    http://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel/

    Tôi thực sự thích ấn phẩm của bạn; Tôi đọc chúng thường xuyên!
    Chúc mừng.

    1.    Getafix dijo

      Bạn đúng rồi. Có một lỗi trong bài báo. Chuyển hướng không tương đương. Lệnh host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2 thực hiện chuyển hướng ngược lại, nghĩa là nó chuyển hướng cổng từ xa 5000 đến 23 cục bộ, ngược lại với những gì lệnh với -L thực hiện.
      Cảm ơn bạn đã sửa chữa.