Sử dụng VPS làm hộp nhảy để truy cập máy chủ đằng sau NAT Sử dụng đường hầm SSH đảo ngược: Phần 2

Ngày Đăng : Sunday, October 06, 2019 - Tác giả: guICE.org

Trong bài viết trước, chúng tôi đã xem xét việc thiết lập một đường hầm SSH đảo ngược để vượt qua giới hạn NAT, cho phép chúng tôi kết nối với một hệ thống từ xa mà không phải thiết lập các quy tắc tường lửa và chuyển tiếp cổng trên mạng. Để đạt được điều này, chúng tôi đã có hệ thống mà chúng tôi muốn kết nối để tạo một đường hầm SSH tới VPS, sau đó chúng tôi đã sử dụng để kết nối lại với hệ thống từ xa này.

Sử dụng VPS làm hộp nhảy để truy cập máy chủ đằng sau NAT Sử dụng đường hầm SSH đảo ngược: Phần 2

Trong bài viết trước, chúng tôi đã xem xét việc thiết lập một đường hầm SSH đảo ngược để vượt qua giới hạn NAT, cho phép chúng tôi kết nối với một hệ thống từ xa mà không phải thiết lập các quy tắc tường lửa và chuyển tiếp cổng trên mạng. Để đạt được điều này, chúng tôi đã có hệ thống mà chúng tôi muốn kết nối để tạo một đường hầm SSH tới VPS, sau đó chúng tôi đã sử dụng để kết nối lại với hệ thống từ xa này.

Điều này sẽ luôn hoạt động tốt khi đường hầm đảo ngược SSH vẫn được kết nối. Thật không may, tuy nhiên, điều này không có khả năng . Nếu hệ thống từ xa nằm trên một mạng không có địa chỉ IP tĩnh thì kết nối sẽ giảm khi IP thay đổi. Nó cũng sẽ giảm nếu VPS hoặc hệ thống từ xa được khởi động lại. Nó cũng có thể bị giảm do các vấn đề với định tuyến internet có thể xảy ra giữa hệ thống từ xa và VPS của bạn. Vì vậy, nếu bạn đang dựa vào đường hầm này để có khả năng truy cập lâu dài cho máy chủ của mình thì bạn sẽ cần một giải pháp để duy trì hoạt động.

Để làm điều này, chúng tôi sẽ tạo một tập lệnh bash để khởi chạy đường hầm SSH của chúng tôi và kiểm tra xem nó có còn được kết nối không. Kịch bản này sẽ chỉ dựa vào đó là quá trình SSH đang chạy - một quy trình cho đường hầm. Nếu có nhiều tiến trình đang chạy, nó sẽ phát hiện ra chúng và cho rằng kết nối đã hết. Nếu hệ thống của bạn là nhiều quy trình SSH, thì bạn sẽ cần một giải pháp khác.

Hãy bắt đầu với kịch bản:

Tạo một tệp cho nó:

nano ~ / đảo ngược -tunnel.sh

Sau đó dán vào đoạn script sau:

#! / bin / bash

startTunnel () {

  / usr / bin / ssh -R 22222: localhost: 22 username@vps.example.com

  nếu [[$? -ne 0]]: sau đó

    echo Không thể khởi động Đường hầm.

  fi

}

/ bin / pidof ssh

nếu [[$? -ne 0]]: sau đó

  echo hầm không tìm thấy, khởi động lại.

  startTunnel

fi

Bây giờ lưu và thoát tệp, và làm cho nó thực thi:

chmod 700 ~ / đảo ngược -tunnel.sh

Bản thân đoạn script khá đơn giản - chúng ta bắt đầu với việc xác định hàm startTunnel (). Điều này sử dụng lệnh chúng ta đã sử dụng trước đây để kết nối đường hầm SSH ngược của chúng tôi. Chúng tôi kiểm tra nếu điều này bắt đầu và báo cáo với một tiếng vang

Theo đó, chúng tôi sử dụng lệnh pidof để tìm ID tiến trình của lệnh SSH. Sau đó, chúng tôi so sánh mã thoát của lệnh pidof (được cung cấp bởi các ký hiệu $?) Với 0.

0 có nghĩa là chương trình đã thoát thành công, nó tìm thấy ID tiến trình cho ssh.

1 có nghĩa là nó không thể.

Vì vậy, nếu pidof thoát với mã thoát không bằng 0 thì lệnh startTunnel được gọi để khởi động đường hầm sao lưu và chúng tôi lặp lại rằng chúng tôi phải khởi động lại nó.

Kịch bản này sẽ đảm bảo rằng đường hầm sẽ được khởi động lại bất cứ khi nào nó ngắt kết nối, mặc dù để nó đạt được mục tiêu đó, nó cần phải được chạy thường xuyên. Để làm điều này, chúng tôi sẽ thêm tập lệnh vào các tác vụ định kỳ được thực hiện bởi máy chủ thay mặt bạn. Chúng tôi sẽ bắt đầu bằng cách chỉnh sửa crontable của bạn:

crontab -e

Sau đó ở cuối tập tin, dán vào dòng sau:

* / 1 * * * * ~ / Reverse-tunnel.sh> ~ / Reverse-tun.log 2> & 1

Điều này sẽ khiến tập lệnh Reverse-tunnel.sh chúng tôi thực hiện được gọi mỗi phút, do đó, chỉ nên có các khoảng thời gian ngắn mà đường hầm ngược không chạy. Chúng tôi cũng chuyển hướng đầu ra sang tệp đường hầm ngược.log để nó có thể được tham chiếu sau nếu có vấn đề với nó.

Lưu và thoát tệp bảng cron, sau đó cron sẽ nhận và chạy tập lệnh của bạn để giữ cho đường hầm chạy và công việc của bạn ở đây được thực hiện. Bây giờ bạn sẽ có thể sử dụng VPS của mình để kết nối qua SSH với hệ thống từ xa bất cứ khi nào bạn cần.

Cảm ơn bạn đã đánh giá
0 Sao 0 Đánh giá
icon to top