Thứ sáu, 25/10/2019 | 00:00 GMT+7

Cách thiết lập front-end server PageKite trên Debian 9

Mạng riêng thường cung cấp quyền truy cập internet đến các server bằng NAT (dịch địa chỉ mạng), chia sẻ một địa chỉ IP công cộng duy nhất với tất cả các server bên trong mạng riêng. Trong hệ thống NAT, các server bên trong mạng riêng không được nhìn thấy từ bên ngoài mạng. Để hiển thị các dịch vụ đang chạy trên các server này với internet công cộng, bạn thường sẽ tạo các luật NAT trong cổng, thường được gọi là luật chuyển tiếp cổng . Tuy nhiên, trong một số trường hợp, bạn sẽ không có quyền truy cập vào cổng để cấu hình các luật này. Đối với những tình huống như thế này, các giải pháp đào hầm như PageKite rất hữu ích.

PageKite là một giải pháp tunnel nhanh chóng và an toàn có thể đưa dịch vụ bên trong mạng riêng lên internet công cộng mà không cần chuyển tiếp cổng. Để làm điều này, nó dựa vào một server bên ngoài, được gọi là server front-end , server phía sau NAT và các client kết nối để cho phép giao tiếp giữa chúng. Theo mặc định, PageKite sử dụng dịch vụ pagekite.net thương mại của riêng mình, nhưng vì đây là một dự án open-souce hoàn toàn, nó cho phép bạn cài đặt giao diện user riêng trên một server có thể truy cập. Với cài đặt này, bạn có thể tạo giải pháp độc lập với nhà cung cấp để truy cập từ xa vào các server sau NAT. Bằng cách cấu hình các server từ xa với client PageKite để kết nối với giao diện user và hiển thị cổng SSH, có thể truy cập chúng thông qua giao diện dòng lệnh bằng SSH. Cũng có thể truy cập giao diện user đồ họa bằng hệ thống chia sẻ máy tính để bàn như VNC hoặc RDP chạy qua kết nối SSH.

Trong hướng dẫn này, bạn sẽ cài đặt và cài đặt dịch vụ mặt trước PageKite trên server chạy Debian 9. Bạn cũng sẽ cài đặt thêm hai server Debian 9 để mô phỏng môi trường local và từ xa. Khi bạn hoàn tất, bạn sẽ cài đặt một server cho nhiều client và thử nghiệm nó với một giải pháp thực tế để truy cập từ xa bằng SSH và VNC.

Yêu cầu

Trước khi làm theo hướng dẫn này, bạn cần các thành phần sau :

  • Một tài khoản DigitalOcean để cài đặt các server sẽ được sử dụng trong hướng dẫn.
  • Server chạy Debian 9 có địa chỉ IP công cộng để hoạt động như server mặt trước, được cài đặt theo hướng dẫn Cài đặt Server Ban đầu với Debian 9 . Một server DigitalOcean tiêu chuẩn với 1GB bộ nhớ là đủ cho mục đích thử nghiệm hoặc cho các ứng dụng có một vài kết nối. Ta sẽ tham chiếu đến server này theo tên server front-end-server và địa chỉ IP công khai của nó bởi Front_End_Public_IP .
  • Hai server chạy Debian 9, sẽ đóng role là server local và từ xa sẽ kết nối bằng dịch vụ PageKite, được cài đặt theo hướng dẫn Cài đặt Server Ban đầu với Debian 9 . Server từ xa, với quyền truy cập internet thông qua NAT, sẽ được server local truy cập bằng tunnel PageKite. Server lưu trữ từ xa và server local sẽ được tham chiếu bởi tên server lưu trữ remote-host local-host và địa chỉ IP công cộng của chúng bằng Remote_Host_Public_IPLocal_Host_Public_IP tương ứng. Hướng dẫn này sẽ sử dụng hai server DigitalOcean tiêu chuẩn với 1GB bộ nhớ để đại diện cho chúng. Ngoài ra, có thể sử dụng hai máy local hoặc máy ảo để đại diện cho các server này.
  • Tên domain đã đăng ký đầy đủ. Hướng dẫn này sẽ sử dụng your_domain làm ví dụ xuyên suốt. Bạn có thể mua domain trên Namecheap , nhận một domain miễn phí trên Freenom hoặc sử dụng công ty đăng ký domain mà bạn chọn.
  • Cả hai bản ghi DNS sau được cài đặt cho server của bạn. Bạn có thể theo dõi phần giới thiệu này về DigitalOcean DNS để biết chi tiết về cách thêm chúng.
    • Một kỷ lục A với pagekite. your_domain trỏ đến địa chỉ IP của front-end-server .
    • Ta cũng cần cài đặt DNS để mọi domain kết thúc bằng pagekite. your_domain cũng chỉ ra front-end-server của ta . Điều này có thể được cài đặt bằng cách sử dụng các mục DNS ký tự đại diện. Trong trường hợp này, hãy tạo bản ghi A cho mục nhập DNS ký tự đại diện *.pagekite. your_domain để trỏ đến cùng một địa chỉ IP, Front_End_Public_IP . Điều này sẽ được sử dụng để phân biệt các khách hàng kết nối với server của ta bằng domain ( client-1.pagekite. your_domainclient-2.pagekite. your_domain , ví dụ) và tunnel những yêu cầu thích hợp.
  • Máy tính local có cài đặt ứng dụng client VNC hỗ trợ kết nối VNC qua tunnel SSH.

Bước 1 - Cài đặt server

Trong hướng dẫn này, ta sẽ sử dụng ba server DigitalOcean để đóng role của front-end-server , local-hostremote-host . Để thực hiện việc này, trước tiên ta sẽ cài đặt local-host remote-host có quyền truy cập vào môi trường đồ họa và bắt chước hành vi của remote-host theo NAT, để PageKite được dùng như một giải pháp để truy cập các dịch vụ của nó . Bên cạnh đó, ta cũng cần phải cấu hình các luật firewall Server của front-end-server để cho phép nó hoạt động với PageKite và trung gian kết nối giữa local-hostremote-host .

Vì ta sẽ làm việc với nhiều server , ta sẽ sử dụng các màu khác nhau trong danh sách lệnh để xác định server nào ta đang sử dụng, như sau:

  • # Commands and outputs in the front-end-server Server
  • # Commands and outputs in the remote-host Server
  • # Commands and outputs in the local-host Server
  • # Commands and outputs in both the remote-host and local-host Server

Đầu tiên ta hãy đi qua các bước cho cả Server local-host remote-host local-host , để cài đặt các phụ thuộc và cài đặt quyền truy cập vào môi trường đồ họa bằng VNC. Sau đó, ta sẽ đề cập đến cấu hình firewall trong mỗi ba server để cho phép front-end-server chạy PageKite và bắt chước kết nối bằng NAT trên remote-host .

Cài đặt phụ thuộc

Ta cần quyền truy cập vào giao diện đồ họa trên cả local-host remote-host để chạy qua trình diễn này. Trên local-host , ta sẽ sử dụng phiên VNC để truy cập giao diện đồ họa của nó và kiểm tra cài đặt của ta bằng trình duyệt. Trên remote-host , ta sẽ cài đặt một phiên VNC mà ta sẽ truy cập từ local-host .

Để cài đặt VNC, trước tiên ta cần cài đặt một số phụ thuộc vào local-hostremote-host . Nhưng trước khi cài đặt bất kỳ gói nào, ta cần cập nhật danh sách gói của các repository , bằng cách chạy như sau trên cả hai server :

  • sudo apt-get update

Tiếp theo, ta cài đặt server VNC và môi trường user đồ họa, cần thiết để bắt đầu phiên VNC. Ta sẽ sử dụng server Tight VNC và môi trường máy tính để bàn Xfce , có thể được cài đặt bằng lệnh:

  • sudo apt-get install xfce4 xfce4-goodies tightvncserver

Trong quá trình cài đặt môi trường đồ họa, ta sẽ được hỏi về bố cục bàn phím mà ta muốn sử dụng. Đối với bàn phím QWERTY US, hãy chọn English (US) .

Ngoài những điều này, trên local-host ta cần một trình xem VNC và một trình duyệt internet để có thể thực hiện kết nối với remote-host . Hướng dẫn này sẽ cài đặt trình duyệt web Firefoxxtightvncviewer . Để cài đặt chúng, hãy chạy:

  • sudo apt-get install firefox-esr xtightvncviewer

Khi một môi trường đồ họa được cài đặt, hệ thống khởi tạo ở chế độ đồ họa theo mặc định. Bằng cách sử dụng console DigitalOcean, có thể trực quan hóa trình quản lý đăng nhập đồ họa, nhưng không thể đăng nhập hoặc sử dụng giao diện dòng lệnh. Trong cài đặt của ta , ta đang bắt chước hành vi mạng như thể ta đang sử dụng NAT. Để làm điều này, ta cần sử dụng console DigitalOcean, vì ta sẽ không thể kết nối bằng SSH. Do đó, ta cần vô hiệu hóa giao diện user đồ họa tự động khởi động khi server khởi động . Điều này có thể được thực hiện bằng cách tắt trình quản lý đăng nhập trên cả hai server :

  • sudo systemctl disable lightdm.service

Sau khi vô hiệu hóa trình quản lý đăng nhập, ta có thể khởi động lại Server và kiểm tra xem ta có thể đăng nhập bằng console DigitalOcean hay không. Để làm điều đó, hãy chạy như sau:

  • sudo shutdown -r now

Tiếp theo, truy cập console DigitalOcean bằng cách chuyển đến trang Server trong Control panel DigitalOcean, chọn Server trên local-host của bạn và nhấp vào từ Console ở góc trên cùng bên phải, gần lựa chọn để bật và tắt Server:

 Control panel  DigitalOcean

Sau khi nhấn enter trong console , bạn sẽ được yêu cầu nhập tên user và password của bạn . Nhập các thông tin đăng nhập này để hiển thị dấu nhắc dòng lệnh:

 Control panel   server  DigitalOcean

Khi bạn đã thực hiện việc này cho local-host , hãy lặp lại cho remote-host .

Với console được cài đặt cho cả hai Server, bây giờ ta có thể cài đặt VNC.

Cài đặt VNC

Ở đây, ta sẽ cùng nhau cài đặt VNC cơ bản. Nếu bạn muốn có hướng dẫn chuyên sâu hơn về cách cài đặt điều này, hãy xem hướng dẫn Cách cài đặt và cấu hình VNC trên Debian 9 của ta .

Để bắt đầu phiên VNC, hãy chạy như sau trên cả Server remote-host local-host remote-host :

  • vncserver

Trong lần chạy đầu tiên, hệ thống sẽ tạo các file cấu hình và yêu cầu nhập password chính. Nhập password mong muốn của bạn, sau đó xác minh nó. Server VNC cũng sẽ yêu cầu password chỉ xem, được sử dụng để xem phiên VNC của user khác. Vì ta sẽ không cần phiên VNC chỉ xem, hãy nhập n cho dấu nhắc này.

Ouput sẽ trông giống như sau:

Output
sammy@remote-host:/home/sammy$ vncserver  You will require a password to access your desktops.  Password:  Verify:    Would you like to enter a view-only password (y/n)? n xauth:  file /home/sammy/.Xauthority does not exist  New 'X' desktop is remote-host:1  Creating default startup script /home/sammy/.vnc/xstartup Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/remote-host:1.log 

Dấu :1 sau tên server thể hiện số phiên VNC. Theo mặc định, phiên số 1 được chạy trên cổng 5901 , phiên số 2 trên cổng 5902 , v.v. Tiếp theo kết quả trước đó, ta có thể truy cập remote-host bằng cách sử dụng client VNC để kết nối với Remote_Host_Public_IP trên cổng 5901 .

Một vấn đề của cấu hình trước đó là nó không liên tục, nghĩa là nó sẽ không được khởi động theo mặc định khi Server được khởi động lại. Để làm cho nó hoạt động bền bỉ, ta có thể tạo một dịch vụ Systemd và kích hoạt nó. Để làm điều đó, ta sẽ tạo file vncserver@.service trong /etc/systemd/system , có thể được thực hiện bằng nano :

  • sudo nano /etc/systemd/system/vncserver@.service

Đặt các nội dung sau vào file , thay thế sammy bằng tên user của bạn:

/etc/systemd/system/vncserver@.service
[Unit] Description=Start TightVNC server at startup After=syslog.target network.target  [Service] Type=forking User=sammy PAMName=login PIDFile=/home/sammy/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i ExecStop=/usr/bin/vncserver -kill :%i  [Install] WantedBy=multi-user.target 

Tệp này tạo một đơn vị vncserver Systemd, đơn vị này có thể được cấu hình như một dịch vụ hệ thống bằng cách sử dụng công cụ systemctl . Trong trường hợp này, khi dịch vụ được khởi động, nó sẽ giết phiên VNC nếu nó đang chạy (dòng ExecStartPre ) và bắt đầu một phiên mới bằng cách sử dụng độ phân giải được đặt thành 1280x800 (dòng ExecStart ). Khi dịch vụ bị dừng, nó sẽ giết phiên VNC (dòng ExecStop ).

Lưu file và thoát khỏi nano . Tiếp theo, ta sẽ làm cho hệ thống biết về file đơn vị mới bằng lệnh:

  • sudo systemctl daemon-reload

Sau đó, cho phép dịch vụ được tự động khởi động khi server được khởi tạo bằng lệnh:

  • sudo systemctl enable vncserver@1.service

Khi ta sử dụng lệnh enable với systemctl , các softlink được tạo để dịch vụ được khởi động tự động khi hệ thống được khởi tạo, như được thông báo bởi kết quả của lệnh trước:

Output
Created symlink /etc/systemd/system/multi-user.target.wants/vncserver@1.service → /etc/systemd/system/vncserver@.service. 

Với server VNC được cấu hình đúng cách, ta có thể khởi động lại Server để kiểm tra xem dịch vụ có tự động khởi động hay không:

  • sudo shutdown -r now

Sau khi hệ thống khởi tạo, đăng nhập bằng SSH và kiểm tra xem VNC có đang chạy với:

  • sudo systemctl status vncserver@1.service

Đầu ra sẽ cho biết dịch vụ đang chạy:

● vncserver@1.service - Start TightVNC server at startup    Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled)    Active: active (running) since Thu 2019-08-29 19:21:12 UTC; 1h 22min ago   Process: 848 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS)   Process: 760 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2)  Main PID: 874 (Xtightvnc)     Tasks: 0 (limit: 4915)    CGroup: /system.slice/system-vncserver.slice/vncserver@1.service            ‣ 874 Xtightvnc :1 -desktop X -auth /home/sammy/.Xauthority -geometry 1280x800 -depth 24 -rfbwait  Aug 29 19:21:10 remote-host systemd[1]: Starting Start TightVNC server at startup... Aug 29 19:21:10 remote-host systemd[760]: pam_unix(login:session): session opened for user sammy by (uid=0) Aug 29 19:21:11 remote-host systemd[848]: pam_unix(login:session): session opened for user sammy by (uid=0) Aug 29 19:21:12 remote-host systemd[1]: Started Start TightVNC server at startup. ~ 

Điều này kết thúc cấu hình VNC. Hãy nhớ làm theo các bước trước trên cả remote-host local-host . Bây giờ ta hãy xem xét các cấu hình firewall cho từng server .

Cấu hình firewall

Bắt đầu với remote-host , ta sẽ cấu hình firewall để từ chối các kết nối bên ngoài đến các dịch vụ của Server để bắt chước hành vi từ phía sau NAT. Trong hướng dẫn này, ta sẽ sử dụng cổng 8000 cho các kết nối HTTP, 22 cho SSH và 5901 cho VNC, vì vậy ta sẽ cấu hình firewall để từ chối các kết nối bên ngoài đến các cổng này.

Bằng cách thực hiện theo cài đặt ban đầu cho Debian 9 , remote-host sẽ có luật firewall để cho phép kết nối tới SSH. Ta có thể xem xét luật này bằng lệnh:

  • sudo ufw status verbose

Đầu ra sẽ như sau:

Output
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip  To                         Action      From --                         ------      ---- 22/tcp (OpenSSH)           ALLOW IN    Anywhere                   22/tcp (OpenSSH (v6))      ALLOW IN    Anywhere (v6)     

Xóa các luật SSH này để bắt chước hành vi đằng sau NAT.

Cảnh báo: Đóng cổng 22 nghĩa là bạn sẽ không thể sử dụng SSH để đăng nhập từ xa vào server của bạn . Đối với Server, đây không phải là vấn đề vì bạn có thể truy cập console của server thông qua Control panel DigitalOcean , như ta đã làm ở cuối phần Cài đặt phụ thuộc của bước này. Tuy nhiên, nếu bạn không sử dụng Server, hãy cẩn thận: việc đóng cổng 22 có thể khóa bạn khỏi server của bạn nếu bạn không có phương tiện nào khác để truy cập.

Để từ chối quyền truy cập SSH, hãy sử dụng ufw và chạy:

  • sudo ufw delete allow OpenSSH

Ta có thể xác minh các luật SSH đã bị xóa bằng cách kiểm tra lại trạng thái của firewall :

  • sudo ufw status verbose

Đầu ra sẽ không hiển thị các luật firewall , như sau:

Output
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip 

Mặc dù firewall đã được cấu hình , cấu hình mới sẽ không chạy cho đến khi ta kích hoạt nó với:

  • sudo ufw enable

Sau khi bật nó, hãy lưu ý ta sẽ không thể truy cập remote-host qua SSH nữa, như đã đề cập trong kết quả của lệnh:

Output
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup 

Đăng xuất khỏi remote-host , sau đó kiểm tra cấu hình bằng cách thử cài đặt kết nối SSH hoặc VNC. Nó sẽ không thể thực hiện được. Từ bây giờ, ta có thể truy cập remote-host độc quyền bằng console DigitalOcean.

Trên local-host , ta sẽ để ngỏ các cổng SSH. Ta chỉ cần một luật firewall để cho phép truy cập vào phiên VNC:

  • sudo ufw allow 5901

Sau khi sửa đổi các luật firewall , hãy kích hoạt nó bằng lệnh:

  • sudo ufw enable

Bây giờ ta có thể kiểm tra kết nối VNC bằng ứng dụng client VNC tiên quyết trên máy local của bạn để kết nối với local-host trên cổng 5901 bằng password VNC mà bạn đã cài đặt .

Để thực hiện việc này, hãy mở ứng dụng client VNC của bạn và kết nối với Local_Host_Public_IP :5901 . Sau khi bạn nhập password , bạn sẽ kết nối với phiên VNC.

Lưu ý: Nếu bạn gặp sự cố khi kết nối với phiên VNC, hãy khởi động lại dịch vụ VNC trên local-host với sudo systemctl restart vncserver@1 và thử kết nối lại.

Trong lần khởi động đầu tiên, Xfce sẽ hỏi về cài đặt ban đầu của môi trường:

Cấu hình Xfce ban đầu

Đối với hướng dẫn này, hãy chọn tùy chọn Sử dụng cấu hình mặc định .

Cuối cùng, ta cần cho phép các kết nối đến cổng 80 trên front-end-server , cổng này sẽ được sử dụng bởi PageKite. Mở một terminal trên front-end-server và sử dụng lệnh sau:

  • sudo ufw allow 80

Ngoài ra, cho phép lưu lượng truy cập trên cổng 443 cho HTTPS:

  • sudo ufw allow 443

Để kích hoạt cấu hình firewall mới, hãy chạy như sau:

  • sudo ufw enable

Bây giờ ta đã cài đặt Server, hãy cấu hình server front-end của PageKite.

Bước 2 - Cài đặt PageKite trên Server Front-End

Mặc dù có thể chạy PageKite bằng cách sử dụng tập lệnh Python để cài đặt server front-end, nhưng việc chạy nó bằng dịch vụ hệ thống sẽ tin cậy hơn. Để làm như vậy, ta cần cài đặt PageKite trên server .

Cách khuyến nghị để cài đặt dịch vụ trên server Debian là sử dụng gói phân phối . Bằng cách này, có thể tải các bản cập nhật tự động và cấu hình dịch vụ để khởi động khi server khởi động .

Đầu tiên, ta sẽ cấu hình repository để cài đặt PageKite. Để làm điều đó, hãy cập nhật danh sách gói của các kho:

  • sudo apt-get update

Sau khi cập nhật xong, hãy cài đặt gói dirmngr , gói này cần thiết để hỗ trợ nhập vòng khóa từ repository PageKite đảm bảo cài đặt an toàn:

  • sudo apt-get install dirmngr

Tiếp theo, thêm repository vào file /etc/apt/sources.list , bằng lệnh:

  • echo deb http://pagekite.net/pk/deb/ pagekite main | sudo tee -a /etc/apt/sources.list

Sau khi cài đặt repository , hãy nhập khóa đóng gói PageKite vào bộ khóa tin cậy của ta , để ta có thể cài đặt các gói từ repository này. Quản lý khóa đóng gói được thực hiện với tiện ích apt-key . Trong trường hợp này, ta phải nhập khóa AED248B1C7B2CAC3 từ khóa server keys.gnupg.net , có thể thực hiện bằng lệnh:

  • sudo apt-key adv --recv-keys --keyserver keys.gnupg.net AED248B1C7B2CAC3

Tiếp theo, cập nhật lại danh sách gói của repository , để gói pagekite được lập index :

  • sudo apt-get update

Cuối cùng, cài đặt nó với:

  • sudo apt-get install pagekite

Bây giờ ta đã cài đặt xong PageKite, hãy cài đặt server front-end và cấu hình dịch vụ để chạy khi khởi động.

Bước 3 - Cấu hình Server Front-End

Gói PageKite mà ta vừa cài đặt được dùng để cấu hình kết nối với server PageKite front-end. Nó cũng được dùng để cài đặt dịch vụ front-end để nhận các kết nối PageKite, Đây là kết quả ta muốn làm ở đây. Để làm như vậy, ta phải chỉnh sửa các file cấu hình của PageKite.

PageKite lưu trữ các file cấu hình của nó trong folder /etc/pagekite.d . Thay đổi đầu tiên mà ta phải làm là vô hiệu hóa tất cả các dòng trong file /etc/pagekite.d/10_account.rc , vì file này chỉ được sử dụng khi PageKite được cài đặt làm client để kết nối với server front-end. Ta có thể chỉnh sửa file bằng nano :

  • sudo nano /etc/pagekite.d/10_account.rc

Để tắt các dòng, hãy thêm dấu # để tắt các dòng hoạt động của file :

/etc/pagekite.d/10_account.rc
#################################[ This file is placed in the Public Domain. ]# # Replace the following with your account details.  # kitename   = NAME.pagekite.me # kitesecret = YOURSECRET  # Delete this line! # abort_not_configured 

Sau khi áp dụng các thay đổi , hãy lưu chúng và thoát khỏi nano . Tiếp theo, chỉnh sửa file /etc/pagekite.d/20_frontends.rc :

  • sudo nano /etc/pagekite.d/20_frontends.rc

Thêm các dòng được đánh dấu sau vào file và comment dòng defaults , đảm bảo thay thế your_domain bằng domain bạn đang sử dụng và password examplepassword bằng password bạn chọn:

/etc/pagekite.d/20_frontends.rc
 #################################[ This file is placed in the Public Domain. ]# # Front-end selection # # Front-ends accept incoming requests on your behalf and forward them to # your PageKite, which in turn forwards them to the actual server.  You # probably need at least one, the service defaults will choose one for you.  # Use the pagekite.net service defaults. # defaults  # If you want to use your own, use something like: #     frontend = hostname:port # or: #     frontends = COUNT:dnsname:port  isfrontend ports=80,443  protos=http,https,raw domain=http,https,raw:*.pagekite.your_domain:examplepassword  rawports=virtual 

Hãy giải thích từng dòng một. Đầu tiên, để cấu hình PageKite làm server front-end, ta đã thêm dòng isfrontend . Để cấu hình các cổng mà server sẽ lắng nghe, ta đã thêm ports=80,443 . Ta cũng đã cấu hình các giao thức mà PageKite sẽ chuyển sang proxy. Để sử dụng HTTP, HTTPS và RAW (được sử dụng bởi các kết nối SSH), ta thêm dòng protos=http,https,raw . Ta cũng vô hiệu hóa cài đặt defaults để không có cấu hình xung đột cho server .

Bên cạnh đó, ta đã cấu hình domain mà ta sẽ sử dụng cho front-end-server . Đối với mỗi client , một domain phụ sẽ được sử dụng, đó là lý do tại sao ta cần cấu hình DNS trong phần Yêu cầu . Ta cũng cài đặt một password sẽ được sử dụng để xác thực khách hàng. Sử dụng password examplepassword password giữ chỗ, những cấu hình này được thực hiện bằng cách thêm domain=http,https,raw:*.pagekite. your_domain : examplepassword dòng domain=http,https,raw:*.pagekite. your_domain : examplepassword . Cuối cùng, ta đã thêm một dòng bổ sung để kết nối bằng SSH (không được ghi chép lại, như đã thảo luận ở đây ): rawports=virtual .

Lưu file và thoát khỏi nano . Khởi động lại dịch vụ PageKite bằng lệnh:

  • sudo systemctl restart pagekite.service

Sau đó cho phép nó bắt đầu khi server khởi động với:

  • sudo systemctl enable pagekite.service

Bây giờ ta đã chạy front-end-server , hãy kiểm tra nó bằng cách để lộ một cổng HTTP trên remote-host và kết nối với remote-host đó từ local-host .

Bước 4 - Kết nối với server lưu trữ đằng sau NAT

Để kiểm tra front-end-server , hãy khởi động một dịch vụ HTTP trên remote-host và đưa nó lên internet bằng cách sử dụng PageKite, để ta có thể kết nối với nó từ local-host . Lưu ý , ta phải kết nối với remote-host bằng console DigitalOcean, vì ta đã cấu hình firewall để từ chối các kết nối SSH đến.

Để khởi động một server HTTP để thử nghiệm, ta có thể sử dụng module http.server Python 3. Vì Python đã được cài đặt ngay cả trên bản cài đặt Debian tối thiểu và http.server là một phần của thư viện Python tiêu chuẩn, để khởi động server HTTP bằng cổng 8000 trên remote-host ta sẽ chạy:

  • python3 -m http.server 8000 &

Vì Debian 9 vẫn sử dụng Python 2 theo mặc định, nên cần gọi Python bằng cách chạy python3 để khởi động server . Kết thúc & ký tự cho biết lệnh chạy ở chế độ nền để ta vẫn có thể sử dụng shell terminal. Kết quả kết quả sẽ cho biết server đang chạy:

Output
sammy@remote-host:~$ python3 -m http.server 8000 & [1] 1782 sammy@remote-host:~$ Serving HTTP on 0.0.0.0 port 8000 ... 

Lưu ý: Số 1782 xuất hiện trong kết quả này đề cập đến ID được gán cho quá trình bắt đầu bằng lệnh này và có thể khác nhau tùy thuộc vào lần chạy. Vì nó đang chạy ở chế độ nền, ta có thể sử dụng ID này để kết thúc (giết) quá trình bằng cách đưa ra kill -9 1782 .

Với server HTTP đang chạy, ta có thể cài đặt tunnel PageKite. Một cách nhanh chóng để thực hiện việc này là sử dụng tập lệnh pagekite.py . Ta có thể tải nó xuống remote-host đang chạy:

  • wget https://pagekite.net/pk/pagekite.py

Sau khi download , hãy đánh dấu nó là thực thi bằng lệnh:

  • chmod a+x pagekite.py

Lưu ý: Vì PageKite được viết bằng Python 2 và đây là version mặc định hiện tại của Python trong Debian 9 nên lệnh tiếp tục hoạt động mà không có lỗi. Tuy nhiên, vì Python mặc định đang được di chuyển dần dần sang Python 3 trong một số bản phân phối Linux, có thể cần phải thay đổi dòng đầu tiên của tập lệnh pagekite.py để đặt nó chạy với Python 2 (đặt nó thành #!/usr/bin/python2 ).

Với pagekite.py có sẵn trong folder hiện tại, ta có thể kết nối với front-end-server và hiển thị server HTTP trên domain remote-host.pagekite. your_domain bằng cách chạy phần sau, thay thế your_domainexamplepassword bằng thông tin đăng nhập của bạn :

  • ./pagekite.py --clean --frontend=pagekite.your_domain:80 --service_on=http:remote-host.pagekite.your_domain:localhost:8000:examplepassword

Hãy xem các đối số trong lệnh này:

  • --clean được sử dụng để bỏ qua cấu hình mặc định.
  • --frontend=pagekite. your_domain :80 chỉ định địa chỉ của giao diện user của ta . Lưu ý ta đang sử dụng cổng 80 , vì ta đã đặt giao diện user để chạy trên cổng này ở Bước 3.
  • Trong đối số cuối cùng, --service_on=http:remote-host.pagekite. your_domain :localhost:8000: examplepassword , ta cài đặt dịch vụ mà ta sẽ giới thiệu ( http ), domain ta sẽ sử dụng ( remote-host.pagekite. your_domain ), địa chỉ local và cổng nơi dịch vụ đang chạy ( localhost:8000 vì ta đang tiết lộ một dịch vụ trên cùng một server mà ta đang sử dụng để kết nối với PageKite) và password để kết nối với giao diện user ( examplepassword ).

Khi lệnh này được chạy, ta sẽ thấy thông báo Kites are flying and all is well hiển thị Kites are flying and all is well trong console . Sau đó, ta có thể mở cửa sổ trình duyệt trong phiên VNC local-host và sử dụng nó để truy cập server HTTP trên server remote-host bằng cách truy cập địa chỉ http://remote-host.pagekite. your_domain . Điều này sẽ hiển thị hệ thống file cho remote-host :

 server  local  Truy cập trang web  server  từ xa

Để dừng kết nối của PageKite trên remote-host , hãy nhấn CTRL+C trong console remote-host .

Bây giờ ta đã thử nghiệm front-end-server , hãy cấu hình remote-host để kết nối với PageKite được bền vững và bắt đầu khi server khởi động .

Bước 5 - Làm cho cấu hình server lưu trữ ổn định

Kết nối giữa remote-host front-end-server mà ta cài đặt ở Bước 4 không liên tục, nghĩa là kết nối sẽ không được cài đặt lại khi server được khởi động lại. Đây sẽ là một vấn đề nếu bạn muốn sử dụng giải pháp này lâu dài, vì vậy hãy thực hiện cài đặt này liên tục.

Có thể cài đặt PageKite để chạy như một dịch vụ trên remote-host , để nó được khởi động khi server khởi động . Để thực hiện việc này, ta có thể sử dụng các gói phân phối tương tự mà ta đã sử dụng cho front-end-server trong Bước 3. Trong console remote-host truy cập thông qua console DigitalOcean, hãy chạy lệnh sau để cài đặt dirmngr :

  • sudo apt-get install dirmngr

Sau đó, để thêm repository PageKite và nhập khóa GPG, hãy chạy:

  • echo deb http://pagekite.net/pk/deb/ pagekite main | sudo tee -a /etc/apt/sources.list
  • sudo apt-key adv --recv-keys --keyserver keys.gnupg.net AED248B1C7B2CAC3

Để cập nhật danh sách gói và cài đặt PageKite, hãy chạy:

  • sudo apt-get update
  • sudo apt-get install pagekite

Để cài đặt PageKite làm ứng dụng client , ta sẽ cấu hình địa chỉ và cổng của front-end-server trong file /etc/pagekite.d/20_frontends.rc . Ta có thể chỉnh sửa nó bằng nano :

  • sudo nano /etc/pagekite.d/20_frontends.rc

Trong file này, hãy chú thích dòng với các giá trị defaults để tránh sử dụng các giá pagekite.net mặc định của dịch vụ pagekite.net . Ngoài ra, hãy cấu hình địa chỉ và cổng của front-end-server bằng cách sử dụng frontend tham số, thêm dòng frontend = pagekite. your_domain :80 đến cuối file . Đảm bảo thay thế your_domain bằng domain bạn đang sử dụng.

Đây là toàn bộ file với các dòng đã chỉnh sửa được đánh dấu:

/etc/pagekite.d/20_frontends.rc
#################################[ This file is placed in the Public Domain. ]# # Front-end selection # # Front-ends accept incoming requests on your behalf and forward them to # your PageKite, which in turn forwards them to the actual server.  You # probably need at least one, the service defaults will choose one for you.  # Use the pagekite.net service defaults. # defaults  # If you want to use your own, use something like:      frontend = pagekite.your_domain:80 # or: #     frontends = COUNT:dnsname:port 

Sau khi lưu các sửa đổi và thoát nano , hãy tiếp tục cấu hình bằng cách chỉnh sửa file /etc/pagekite.d/10_account.rc và đặt thông tin xác thực để kết nối với front-end-server . Đầu tiên, hãy mở file bằng lệnh:

  • sudo nano /etc/pagekite.d/10_account.rc

Để cài đặt domain , ta sẽ sử dụng domain và password để kết nối với front-end-server của ta , chỉnh sửa các thông số kitenamekitesecret tương ứng. Ta cũng phải comment dòng cuối cùng của file để kích hoạt cấu hình, như được đánh dấu tiếp theo:

/etc/pagekite.d/10_account.rc
#################################[ This file is placed in the Public Domain. ]# # Replace the following with your account details.  kitename   = remote-host.pagekite.your_domain kitesecret = examplepassword  # Delete this line! # abort_not_configured 

Lưu và thoát khỏi editor .

Bây giờ ta sẽ cấu hình các dịch vụ của ta sẽ được hiển thị trên internet. Đối với các dịch vụ HTTP và SSH, PageKite bao gồm các file cấu hình mẫu có phần mở rộng kết thúc bằng .sample trong folder cấu hình /etc/pagekite.d của nó. Hãy bắt đầu bằng cách sao chép file cấu hình mẫu thành file hợp lệ cho HTTP:

  • cd /etc/pagekite.d
  • sudo cp 80_httpd.rc.sample 80_httpd.rc

Tệp cấu hình HTTP gần như đã được cài đặt . Ta chỉ phải điều chỉnh cổng HTTP mà ta có thể thực hiện bằng cách chỉnh sửa file ta vừa sao chép:

  • sudo nano /etc/pagekite.d/80_httpd.rc

Tham số service_on xác định địa chỉ và cổng của dịch vụ mà ta muốn hiển thị. Theo mặc định, nó hiển thị localhost:80 . Vì server HTTP của ta sẽ chạy trên cổng 8000 , ta chỉ cần thay đổi số cổng, như được đánh dấu tiếp theo:

/etc/pagekite.d/80_httpd.rc
#################################[ This file is placed in the Public Domain. ]# # Expose the local HTTPD  service_on = http:@kitename : localhost:8000 : @kitesecret  # If you have TLS/SSL configured locally, uncomment this to enable end-to-end # TLS encryption instead of relying on the wild-card certificate at the relay.  #service_on = https:@kitename : localhost:443 : @kitesecret  # # Uncomment the following to globally DISABLE the request firewall.  Do this # if you are sure you know what you are doing, for more details please see #                <http://pagekite.net/support/security/> # #insecure # # To disable the firewall for one kite at a time, use lines like this:: # #service_cfg = KITENAME.pagekite.me/80 : insecure : True 

Lưu ý: Cú pháp tham số service_on tương tự như cú pháp được sử dụng với tập lệnh pagekite.py . Tuy nhiên, domain mà ta sẽ sử dụng và password được lấy từ file /etc/pagekite.d/10_account.rc và được chèn bởi các dấu @kitename@kitesecret tương ứng.

Sau khi lưu các sửa đổi cho file cấu hình này, ta phải khởi động lại dịch vụ để các thay đổi có hiệu lực:

  • sudo systemctl restart pagekite.service

Để khởi động dịch vụ khi khởi động, hãy bật dịch vụ với:

  • sudo systemctl enable pagekite.service

Cũng giống như ta đã làm trước đây, sử dụng module Python http.server để mô phỏng server HTTP của ta . Nó sẽ chạy kể từ khi ta bắt đầu nó chạy ở chế độ nền ở Bước 4. Tuy nhiên, nếu vì lý do nào đó mà nó không chạy, ta có thể bắt đầu lại với:

  • python3 -m http.server 8000 &

Bây giờ ta có server HTTP và dịch vụ PageKite đang chạy, hãy mở cửa sổ trình duyệt trong phiên VNC local-host và sử dụng nó để truy cập remote-host bằng cách sử dụng địa chỉ http://remote-host.pagekite. your_domain . Thao tác này sẽ hiển thị hệ thống file của remote-host trong trình duyệt.

Ta đã biết cách cấu hình server front-end PageKite và client để hiển thị server HTTP local . Tiếp theo, ta sẽ cài đặt remote-host để hiển thị SSH và cho phép kết nối từ xa.

Bước 6 - Hiển thị SSH với PageKite

Bên cạnh HTTP, PageKite được dùng để ủy quyền cho các dịch vụ khác, chẳng hạn như SSH, rất hữu ích để truy cập các server từ xa sau NAT trong môi trường không thể sửa đổi cấu hình mạng và bộ định tuyến.

Trong phần này, ta sẽ cấu hình remote-host để hiển thị dịch vụ SSH của nó bằng cách sử dụng PageKite, sau đó mở một phiên SSH từ local-host .

Giống như ta đã thực hiện để cấu hình HTTP với PageKite, đối với SSH, ta sẽ sao chép file cấu hình mẫu thành file hợp lệ để hiển thị dịch vụ SSH trên remote-host :

  • cd /etc/pagekite.d
  • sudo cp 80_sshd.rc.sample 80_sshd.rc

Tệp này được cấu hình trước để hiển thị dịch vụ SSH đang chạy trên cổng 22 , đây là cấu hình mặc định. Hãy cùng xem nội dung của nó:

  • nano 80_sshd.rc

Điều này sẽ hiển thị cho bạn file :

/etc/pagekite.d/80_sshd.rc
#################################[ This file is placed in the Public Domain. ]# # Expose the local SSH daemon  service_on = raw/22:@kitename : localhost:22 : @kitesecret 

Tệp này rất giống với file được sử dụng để hiển thị HTTP. Sự khác biệt duy nhất là số cổng, là 22 cho SSH và giao thức, phải được đặt thành raw khi hiển thị SSH.

Vì ta không cần thực hiện bất kỳ thay đổi nào ở đây, hãy thoát khỏi file .

Khởi động lại dịch vụ PageKite:

  • sudo systemctl restart pagekite.service

Lưu ý: Ta cũng có thể hiển thị SSH bằng cách sử dụng tập lệnh pagekite.py nếu dịch vụ PageKite chưa được cài đặt. Ta sẽ chỉ cần sử dụng đối số --service-on , đặt giao thức thành raw với domain và password thích hợp. Ví dụ: để hiển thị nó bằng cách sử dụng cùng các tham số mà ta đã cấu hình trong dịch vụ PageKite, ta sẽ sử dụng lệnh ./pagekite.py --clean --frontend=pagekite. your_domain :80 --service_on=raw:remote-host.pagekite. your_domain :localhost:22: examplepassword .

Trên local-host , ta sẽ sử dụng client SSH để kết nối với remote-host . PageKite tạo tunnel cho các kết nối bằng HTTP, để sử dụng SSH qua PageKite, ta cần một proxy HTTP. Có một số tùy chọn về proxy HTTP mà ta có thể sử dụng từ repository Debian, chẳng hạn như Netcat ( nc ) và corkscrew . Đối với hướng dẫn này, ta sẽ sử dụng corkscrew , vì nó yêu cầu ít đối số hơn nc .

Để cài đặt corkscrew trên local-host , hãy sử dụng apt-get install với gói cùng tên:

  • sudo apt-get install corkscrew

Tiếp theo, tạo SSH key trên local-host và nối public key vào file .ssh/authorized_keys của remote-host . Để thực hiện việc này, hãy làm theo hướng dẫn Cách cài đặt SSH key trên Debian 9 , bao gồm phần Sao chép public key theo cách thủ công ở Bước 2.

Để kết nối với server SSH bằng proxy, ta sẽ sử dụng ssh với đối số -o để chuyển vào ProxyCommand và chỉ định corkscrew làm proxy HTTP. Bằng cách này, trên local-host , ta sẽ chạy lệnh sau để kết nối với remote-host thông qua tunnel PageKite:

  • ssh sammy@remote-host.pagekite.your_domain -i ~/id_rsa -o "ProxyCommand corkscrew %h 80 %h %p"

Lưu ý ta đã cung cấp một số đối số để corkscrew . Các %h%p là thẻ mà này thay thế SSH client bằng tên từ xa server ( remote-host.pagekite. your_domain ) và cổng từ xa ( 22 , ngầm được sử dụng bởi ssh ) khi nó chạy corkscrew . 80 đề cập đến cổng mà PageKite đang chạy. Cổng này đề cập đến giao tiếp giữa client PageKite và server front-end.

Khi bạn chạy lệnh này trên local-host , dòng lệnh nhắc remote-host sẽ xuất hiện.

Với kết nối SSH của ta hoạt động qua PageKite, tiếp theo hãy đặt một phiên VNC trên remote_server và truy cập nó từ local-host bằng VNC qua SSH.

Bước 7 - Sử dụng VNC Over SSH

Bây giờ ta có thể truy cập một server từ xa bằng cách sử dụng một shell , giải quyết rất nhiều vấn đề nảy sinh từ các server ẩn sau NAT. Tuy nhiên, trong một số trường hợp, ta yêu cầu quyền truy cập vào giao diện user đồ họa. SSH cung cấp một cách tạo tunnel cho bất kỳ dịch vụ nào trong kết nối của nó, chẳng hạn như VNC, được dùng để truy cập từ xa bằng đồ họa.

Với remote-host cấu hình để hiển thị SSH bằng server front-end của ta , hãy sử dụng kết nối SSH để tạo tunnel VNC và có quyền truy cập vào giao diện đồ họa remote-host .

Vì ta đã cấu hình một phiên VNC để bắt đầu tự động trên remote-host , ta sẽ sử dụng local-host để kết nối với remote-host bằng ssh với đối số -L :

  • ssh sammy@remote-host.pagekite.your_domain -i ~/id_rsa -o "ProxyCommand corkscrew %h 80 %h %p" -L5902:localhost:5901

Đối số -L chỉ định rằng các kết nối đến một cổng local nhất định phải được chuyển tiếp đến một server và cổng từ xa. Cùng với đối số này, ta đã cung cấp một số cổng theo sau là dấu hai chấm, sau đó là địa chỉ IP, domain hoặc tên server , theo sau là dấu hai chấm khác và số cổng. Hãy cùng xem chi tiết thông tin này:

  • Số cổng đầu tiên đề cập đến cổng mà ta sẽ sử dụng trên server đang bắt đầu kết nối SSH (trong trường hợp này local-host ), để nhận kết nối tunnel từ server từ xa. Trong trường hợp này, từ quan điểm của local-host , Phiên VNC từ remote-host từ remote-host sẽ khả dụng local trên cổng 5902 . Ta không thể sử dụng cổng 5901 vì nó đã được sử dụng trên local-host cho phiên VNC của riêng nó.
  • Sau dấu hai chấm đầu tiên, ta cung cấp tên server (hoặc địa chỉ IP) của thiết bị đang phục vụ phiên VNC mà ta muốn tạo tunnel . Nếu ta cung cấp tên server , tên server đó sẽ được phân giải thành địa chỉ IP bởi server đang cung cấp SSH. Trong trường hợp này, vì remote-host từ remote-host đang phục vụ kết nối SSH và phiên VNC cũng được phục vụ bởi server này, ta có thể sử dụng localhost .
  • Sau dấu hai chấm, ta cung cấp cổng mà dịch vụ được đào hầm được phục vụ. Ta sử dụng cổng 5901 , vì VNC đang chạy trên cổng này trên remote-host .

Sau khi kết nối được cài đặt , ta sẽ thấy một shell remote-host trên remote-host .

Bây giờ ta có thể truy cập phiên VNC remote-host local-host bằng cách kết nối với chính cổng 5902 . Để làm như vậy, hãy mở một shell từ GUI local-host trong ứng dụng client VNC của bạn, sau đó chạy:

  • vncviewer localhost:5902

Sau khi cung cấp password VNC cho remote-host , ta sẽ có thể truy cập vào môi trường đồ họa của nó.

Lưu ý: Nếu phiên VNC đã chạy quá lâu, bạn có thể gặp lỗi trong đó GUI trên remote-host được thay thế bằng màn hình màu xám với dấu X cho con trỏ. Nếu điều này xảy ra, hãy thử khởi động lại phiên VNC trên remote-host bằng sudo systemctl restart vncserver@1 . Khi dịch vụ đang chạy, hãy thử kết nối lại.

Cài đặt này có thể hữu ích cho các group hỗ trợ sử dụng quyền truy cập từ xa. Có thể sử dụng SSH để tạo tunnel cho bất kỳ dịch vụ nào có thể được truy cập bởi remote-host . Bằng cách này, ta có thể cài đặt remote-host làm cổng vào mạng local gắn liền với nhiều server , bao gồm một số máy đang chạy Windows hoặc một hệ điều hành khác. Miễn là các server có server VNC với phiên VNC được cài đặt , có thể truy cập chúng bằng giao diện user đồ họa thông qua SSH được tạo bởi front-end-server PageKite của ta .

Trong bước cuối cùng, ta sẽ cấu hình giao diện user PageKite để hỗ trợ nhiều client hơn với các password khác nhau.

Bước 8 - Cấu hình Server Front-End cho Nhiều Khách hàng (Tùy chọn)

Giả sử ta sẽ sử dụng front-end-server mình để cung cấp quyền truy cập từ xa cho nhiều client . Trong cài đặt nhiều user này, cách tốt nhất là cô lập họ, sử dụng domain và password khác nhau cho mỗi người để kết nối với server của ta . Một cách để thực hiện việc này là chạy một số dịch vụ PageKite trên server của ta trên các cổng khác nhau, mỗi cổng được cấu hình với domain phụ và password riêng, nhưng điều này có thể khó tổ chức.

May mắn là giao diện user của PageKite hỗ trợ cấu hình của chính nhiều client , để ta có thể sử dụng cùng một dịch vụ trên một cổng duy nhất. Để làm điều này, ta sẽ cấu hình giao diện user với domain và password .

Như ta đã cấu hình mục DNS ký tự đại diện *.pagekite. your_domain trỏ đến front-end-server của ta , các mục nhập DNS trong các domain phụ như remote-host.client-1.pagekite. your_domain cũng có thể chỉ ra server của ta để ta có thể sử dụng các domain kết thúc bằng client1.pagekite. your_domainclient2.pagekite. your_domain để xác định các server của các client khác nhau với các password khác nhau.

Để thực hiện việc này trên front-end-server , hãy mở file /etc/pagekite.d/20_frontends.rc :

  • sudo nano /etc/pagekite.d/20_frontends.rc

Thêm các domain bằng cách sử dụng từ khóa domain và đặt các password khác nhau cho từng domain . Để cài đặt các domain mà ta đã đề cập, hãy thêm:

/etc/pagekite.d/20_frontends.rc
#################################[ This file is placed in the Public Domain. ]# # Front-end selection # # Front-ends accept incoming requests on your behalf and forward them to # your PageKite, which in turn forwards them to the actual server.  You # probably need at least one, the service defaults will choose one for you.  # Use the pagekite.net service defaults. # defaults  # If you want to use your own, use something like: #     frontend = hostname:port # or: #     frontends = COUNT:dnsname:port  isfrontend ports=80,443  protos=http,https,raw domain=http,https,raw:*.pagekite.your_domain:examplepassword domain=http,https,raw:*.client-1.pagekite.your_domain:examplepassword2 domain=http,https,raw:*.client-2.pagekite.your_domain:examplepassword3  rawports=virtual 

Lưu và thoát khỏi file .

Sau khi sửa đổi các file cấu hình, hãy khởi động lại PageKite:

  • sudo systemctl restart pagekite.service

Trên server từ xa, hãy cấu hình client PageKite để kết nối theo domain và password mới. Ví dụ, trong remote-host , để kết nối bằng client-1.pagekite. your_domain , sửa đổi file /etc/pagekite.d/10_account.rc , nơi lưu trữ thông tin đăng nhập để kết nối với front-end-server :

  • sudo nano /etc/pagekite.d/10_account.rc

Thay đổi kitenamekitesecret thành thông tin đăng nhập thích hợp. Đối với domain remote-host.client-1.pagekite. your_domain , cấu hình sẽ là:

/etc/pagekite.d/10_account.rc
#################################[ This file is placed in the Public Domain. ]# # Replace the following with your account details.  kitename   = remote-host.client-1.pagekite.your_domain kitesecret = examplepassword2  # Delete this line!  

Lưu và thoát khỏi file .

Sau khi sửa đổi file , hãy khởi động lại dịch vụ PageKite:

  • sudo systemctl restart pagekite.service

Như vậy, trên local-host , ta có thể kết nối với remote-host qua SSH với:

  • ssh sammy@remote-host.client-1.pagekite.your_domain -i ~/id_rsa -o "ProxyCommand corkscrew %h 80 %h %p"

Ta có thể sử dụng domain client-2.pagekite. your-domain cho một khách hàng khác. Bằng cách này, ta có thể quản lý các dịch vụ theo cách riêng biệt, với khả năng thay đổi password của một client hoặc thậm chí vô hiệu hóa một trong số chúng mà không ảnh hưởng đến client khác.

Kết luận

Trong bài viết này, ta cài đặt một server front-end PageKite riêng trên Debian 9 Server và sử dụng nó để hiển thị các dịch vụ HTTP và SSH trên một server từ xa phía sau NAT. Sau đó, ta kết nối với các dịch vụ này từ local-host và xác minh chức năng của PageKite. Như ta đã đề cập, đây có thể là một cài đặt hiệu quả cho các ứng dụng truy cập từ xa, vì ta có thể tạo tunnel cho các dịch vụ khác trong kết nối SSH, chẳng hạn như VNC.

Nếu bạn muốn tìm hiểu thêm về PageKite, hãy xem Thông tin hỗ trợ của PageKite . Nếu bạn muốn tìm hiểu sâu hơn về mạng với Server, hãy xem qua Tài liệu về mạng của DigitalOcean .


Tags:

Các tin liên quan

Cách thiết lập server trang kết thúc phía trước PageKite trên Debian 9
2019-10-25
Cách cài đặt Linux, Apache, MariaDB, PHP (LAMP) trên Debian 10
2019-07-15
Thiết lập server ban đầu với Debian 10
2019-07-08
Cách cài đặt và cấu hình Postfix làm server SMTP chỉ gửi trên Debian 10
2019-07-08
Cách xây dựng và triển khai server GraphQL với Node.js và MongoDB trên Ubuntu 18.04
2019-04-18
Cách thiết lập thủ công server Prisma trên Ubuntu 18.04
2019-01-11
Kết xuất phía server với Angular Universal
2019-01-10
Cách cài đặt và cấu hình pgAdmin 4 ở Chế độ server
2018-10-19
Cách cài đặt Linux, Apache, MySQL, PHP (LAMP) trên Debian 8
2018-10-18
Cách cài đặt Linux, Nginx, MySQL, PHP ( LEMP) trên Debian 9
2018-09-13