Cómo configurar un servidor front-end PageKite en Debian 9

El autor seleccionó el Open Internet/Free Speech Fund para recibir una donación como parte del programa Write for DOnations.
Introducción
Las redes privadas generalmente proporcionan acceso a Internet a los hosts mediante NAT (traducción de direcciones de red), compartiendo una única dirección IP pública con todos los hosts dentro de la red privada. En los sistemas NAT, los hosts dentro de la red privada no son visibles desde fuera de la red. Para exponer los servicios que se ejecutan en estos hosts a Internet público, normalmente se crean reglas NAT en la puerta de enlace, comúnmente llamadas reglas de reenvío de puertos. Sin embargo, en varias situaciones, no se tiene acceso a la puerta de enlace para configurar estas reglas. Para situaciones como esta, las soluciones de tunelización como PageKite resultan útiles.
PageKite es una solución de tunelización rápida y segura que puede exponer un servicio dentro de una red privada a la red pública de Internet sin necesidad de reenvío de puertos. Para ello, se basa en un servidor externo, llamado servidor front-end, al que se conectan el servidor detrás de NAT y los clientes para permitir la comunicación entre ellos. De forma predeterminada, PageKite utiliza su propio servicio comercial pagekite.net, pero como es un proyecto completamente de código abierto, permite configurar un frontend privado en un host de acceso público, como un Droplet de DigitalOcean. Con esta configuración, puede crear una solución independiente del proveedor para el acceso remoto a los hosts detrás de NAT. Al configurar los hosts remotos con el cliente PageKite para que se conecten al frontend y expongan el puerto SSH, es posible acceder a ellos a través del shell de la interfaz de línea de comandos mediante SSH. También es posible acceder a una interfaz gráfica de usuario mediante un sistema de uso compartido de escritorio como VNC o RDP que se ejecuta sobre una conexión SSH.
En este tutorial, instalará y configurará un servicio front-end PageKite en un servidor que ejecuta Debian 9. También configurará dos servidores Debian 9 más para simular un entorno local y uno remoto. Cuando haya terminado, habrá configurado un servidor para varios clientes y lo habrá probado con una solución práctica para el acceso remoto mediante SSH y VNC.
Prerrequisitos
Antes de seguir esta guía necesitarás lo siguiente:
- Una cuenta de DigitalOcean para configurar los Droplets que se utilizarán en el tutorial.
- Un servidor que ejecute Debian 9 con una dirección IP pública para actuar como servidor front-end, configurado de acuerdo con la guía Configuración inicial del servidor con Debian 9. Un Droplet DigitalOcean estándar con 1 GB de memoria es suficiente para fines de prueba o para aplicaciones con pocas conexiones. Nos referiremos a este servidor por el nombre de host
front-end-server
y su dirección IP pública porFront_End_Public_IP
. - Dos hosts que ejecutan Debian 9, que desempeñarán el papel de host remoto y local que se conectarán mediante el servicio PageKite, configurados de acuerdo con la guía Configuración inicial del servidor con Debian 9. El host local accederá al host remoto, con acceso a Internet a través de NAT, mediante un túnel PageKite. Se hará referencia a los hosts remotos y locales mediante los nombres de host
remote-host
ylocal-host
sus direcciones IP públicas medianteRemote_Host_Public_IP
yLocal_Host_Public_IP
respectivamente. Este tutorial utilizará dos Droplets DigitalOcean estándar con 1 GB de memoria para representarlos. Alternativamente, se podrían utilizar dos máquinas locales o virtuales para representar estos hosts. - Un nombre de dominio completamente registrado. Este tutorial lo utilizará
your_domain
como ejemplo. Puede comprar un nombre de dominio en Namecheap, obtener uno gratis en Freenom o utilizar el registrador de dominios que prefiera. - Los dos siguientes registros DNS están configurados para su servidor. Puede consultar esta introducción a DigitalOcean DNS para obtener detalles sobre cómo agregarlos.
- Un registro A que apunta a la dirección IP del .
pagekite.your_domain
front-end-server
- También necesitamos configurar el DNS de modo que cada dominio que termine en también apunte a nuestro . Esto se puede configurar utilizando entradas DNS comodín. En este caso, cree un registro A para que la entrada DNS comodín apunte a la misma dirección IP, . Esto se utilizará para distinguir a los clientes que se conectan a nuestro servidor por nombre de dominio ( y , por ejemplo) y canalizar las solicitudes de forma adecuada.
pagekite.your_domain
front-end-server
*.pagekite.your_domain
Front_End_Public_IP
client-1.pagekite.your_domain
client-2.pagekite.your_domain
- Una computadora local con un cliente VNC instalado que admita conexiones VNC a través de túneles SSH.
- En Windows, puede utilizar TightVNC, RealVNC o UltraVNC.
- En macOS, puedes usar el programa de compartir pantalla integrado o puedes usar una aplicación multiplataforma como RealVNC.
- En Linux, puedes elegir entre muchas opciones, incluidas
vinagre
,krdc
, RealVNC o TightVNC.
Paso 1: Configuración de los servidores
En este tutorial, vamos a utilizar tres Droplets de DigitalOcean para desempeñar el papel de front-end-server
, local-host
y remote-host
. Para ello, primero configuraremos local-host
y remote-host
para que tengan acceso al entorno gráfico y para que imiten el comportamiento de un remote-host
bajo NAT, de modo que PageKite se pueda utilizar como una solución para acceder a sus servicios. Además de eso, también debemos configurar las front-end-server
reglas del firewall del Droplet para permitirle trabajar con PageKite e intermediar la conexión entre local-host
y remote-host
.
Como vamos a trabajar con varios servidores, utilizaremos diferentes colores en las listas de comandos para identificar qué servidor estamos usando, de la siguiente manera:
- # Commands and outputs in the front-end-server Droplet
- # Commands and outputs in the remote-host Droplet
- # Commands and outputs in the local-host Droplet
- # Commands and outputs in both the remote-host and local-host Droplets
Primero, repasemos los pasos para remote-host
los local-host
Droplets y para instalar las dependencias y configurar el acceso al entorno gráfico mediante VNC. Después, cubriremos la configuración del firewall en cada uno de los tres Droplets para permitir que se front-end-server
ejecute PageKite e imite una conexión mediante NAT en remote-host
.
Instalación de dependencias
Necesitaremos acceso a la interfaz gráfica en ambos local-host
hosts remote-host
para ejecutar esta demostración. En local-host
, usaremos una sesión VNC para acceder a su interfaz gráfica y probar nuestra configuración usando el navegador. En remote-host
, configuraremos una sesión VNC a la que accederemos desde local-host
.
Para configurar VNC, primero debemos instalar algunas dependencias en local-host
y remote-host
. Pero antes de instalar cualquier paquete, debemos actualizar la lista de paquetes de los repositorios ejecutando lo siguiente en ambos servidores:
- sudo apt-get update
A continuación, instalamos el servidor VNC y un entorno gráfico de usuario, necesarios para iniciar una sesión VNC. Utilizaremos el servidor VNC Tight y el entorno de escritorio Xfce, que se pueden instalar ejecutando:
- sudo apt-get install xfce4 xfce4-goodies tightvncserver
En medio de la instalación del entorno gráfico se nos preguntará por la distribución del teclado que deseamos utilizar. Para un teclado QWERTY US, seleccionar English (US)
.
Además de estos, local-host
vamos a necesitar un visor VNC y un navegador de Internet para poder realizar la conexión a remote-host
. Este tutorial instalará el navegador web Firefox y el xtightvncviewer. Para instalarlos, ejecute:
- sudo apt-get install firefox-esr xtightvncviewer
Cuando se instala un entorno gráfico, el sistema se inicializa en modo gráfico de forma predeterminada. Al utilizar la consola de DigitalOcean, es posible visualizar el administrador de inicio de sesión gráfico, pero no es posible iniciar sesión ni utilizar la interfaz de línea de comandos. En nuestra configuración, estamos imitando el comportamiento de la red como si estuviéramos utilizando NAT. Para ello, necesitaremos utilizar la consola de DigitalOcean, ya que no podremos conectarnos mediante SSH. Por lo tanto, debemos desactivar la interfaz gráfica de usuario para que no se inicie automáticamente al arrancar. Esto se puede hacer desactivando el administrador de inicio de sesión en ambos servidores:
- sudo systemctl disable lightdm.service
Después de deshabilitar el administrador de inicio de sesión, podemos reiniciar los Droplets y probar si podemos iniciar sesión mediante la consola de DigitalOcean. Para ello, ejecute lo siguiente:
- sudo shutdown -r now
A continuación, acceda a la consola de DigitalOcean navegando a la página Droplet en el Panel de control de DigitalOcean, seleccionando su local-host
Droplet y haciendo clic en la palabra Consola en la esquina superior derecha, cerca del interruptor para activar y desactivar el Droplet:
Una vez que presione Enter en la consola, se le solicitará su nombre de usuario y contraseña. Ingrese estas credenciales para que aparezca el indicador de línea de comandos:
Una vez que hayas hecho esto para el local-host
, repítelo para el remote-host
.
Con la consola activa para ambos Droplets, ahora podemos configurar el VNC.
Configuración de VNC
Aquí, realizaremos una configuración básica de VNC. Si desea una guía más detallada sobre cómo configurar esto, consulte nuestro tutorial Cómo instalar y configurar VNC en Debian 9.
Para iniciar una sesión VNC, ejecute lo siguiente en ambos local-host
Droplets remote-host
:
- vncserver
En la primera ejecución, el sistema creará los archivos de configuración y solicitará la contraseña principal. Ingrese la contraseña deseada y luego verifíquela. El servidor VNC también solicitará una contraseña de solo lectura, que se utiliza para ver la sesión VNC de otro usuario. Como no necesitaremos una sesión VNC de solo lectura, escriba n
cuando aparezca el mensaje.
El resultado será similar a esto:
Outputsammy@remote-host:/home/sammy$ vncserverYou will require a password to access your desktops.Password: Verify: Would you like to enter a view-only password (y/n)? nxauth: file /home/sammy/.Xauthority does not existNew 'X' desktop is remote-host:1Creating default startup script /home/sammy/.vnc/xstartupStarting applications specified in /home/sammy/.vnc/xstartupLog file is /home/sammy/.vnc/remote-host:1.log
El :1
después del nombre de host representa el número de la sesión VNC. De forma predeterminada, el número de sesión 1
se ejecuta en el puerto 5901
, el número de sesión 2
en el puerto 5902
, y así sucesivamente. Siguiendo la salida anterior, podemos acceder remote-host
mediante un cliente VNC para conectarnos Remote_Host_Public_IP
en el puerto 5901
.
Un problema de la configuración anterior es que no es persistente, lo que significa que no se iniciará por defecto cuando se reinicie el Droplet. Para que sea persistente, podemos crear un servicio Systemd y habilitarlo. Para ello, crearemos el vncserver@.service
archivo en /etc/systemd/system
, lo que se puede hacer mediante nano
:
- sudo nano /etc/systemd/system/vncserver@.service
Coloque el siguiente contenido en el archivo, reemplazándolo sammy
con su nombre de usuario:
/etc/systemd/system/vncserver@.servicio
[Unit]Description=Start TightVNC server at startupAfter=syslog.target network.target[Service]Type=forkingUser=sammyPAMName=loginPIDFile=/home/sammy/.vnc/%H:%i.pidExecStartPre=-/usr/bin/vncserver -kill :%i /dev/null 21ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%iExecStop=/usr/bin/vncserver -kill :%i[Install]WantedBy=multi-user.target
Este archivo crea una vncserver
unidad Systemd, que se puede configurar como un servicio del sistema mediante la systemctl
herramienta. En este caso, cuando se inicia el servicio, finaliza la sesión VNC si ya se está ejecutando (línea ExecStartPre
) e inicia una nueva sesión utilizando la resolución establecida en 1280x800
(línea ExecStart
). Cuando se detiene el servicio, finaliza la sesión VNC (línea ExecStop
).
Guarde el archivo y salga nano
. A continuación, haremos que el sistema conozca el nuevo archivo de unidad ejecutando:
- sudo systemctl daemon-reload
Luego, habilite el servicio para que se inicie automáticamente cuando se inicialice el servidor ejecutando:
- sudo systemctl enable vncserver@1.service
Cuando usamos el enable
comando con systemctl
, se crean enlaces simbólicos para que el servicio se inicie automáticamente cuando se inicializa el sistema, como lo informa la salida del comando anterior:
OutputCreated symlink /etc/systemd/system/multi-user.target.wants/vncserver@1.service → /etc/systemd/system/vncserver@.service.
Con el servidor VNC configurado correctamente, podemos reiniciar los Droplets para probar si el servicio se inicia automáticamente:
- sudo shutdown -r now
Después de que el sistema se inicialice, inicie sesión usando SSH y verifique si VNC se está ejecutando con:
- sudo systemctl status vncserver@1.service
La salida indicará que el servicio se está ejecutando:
● 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 21 (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 -rfbwaitAug 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.~
Con esto finaliza la configuración de VNC. Recuerde seguir los pasos anteriores tanto en remote-host
como en local-host
. Ahora, analicemos las configuraciones del firewall para cada host.
Configurar el firewall
Comenzando con el remote-host
, configuraremos el firewall para rechazar conexiones externas a los servicios de Droplets para imitar el comportamiento detrás de NAT. En este tutorial, vamos a utilizar el puerto 8000
para conexiones HTTP, 22
para SSH y 5901
para VNC, por lo que configuraremos el firewall para rechazar conexiones externas a estos puertos.
Siguiendo la configuración inicial de Debian 9, remote-host
tendremos una regla de firewall para permitir conexiones a SSH. Podemos revisar esta regla ejecutando:
- sudo ufw status verbose
El resultado será el siguiente:
OutputStatus: activeLogging: on (low)Default: deny (incoming), allow (outgoing), disabled (routed)New profiles: skipTo Action From-- ------ ----22/tcp (OpenSSH) ALLOW IN Anywhere 22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6)
Elimine estas reglas SSH para imitar el comportamiento detrás de NAT.
Advertencia: si cierra el puerto 22
, ya no podrá usar SSH para iniciar sesión de forma remota en su servidor. Para los Droplets, esto no es un problema porque puede acceder a la consola del servidor a través del Panel de control de DigitalOcean, como hicimos al final de la sección Instalación de dependencias de este paso. Sin embargo, si no está usando un Droplet, tenga cuidado: si cierra el puerto, 22
podría quedar fuera de su servidor si no tiene otros medios para acceder a él.
Para denegar el acceso SSH, utilice ufw
y ejecute:
- sudo ufw delete allow OpenSSH
Podemos verificar que se eliminaron las reglas SSH verificando nuevamente el estado del firewall:
- sudo ufw status verbose
La salida no mostrará ninguna regla de firewall, como en lo siguiente:
OutputStatus: activeLogging: on (low)Default: deny (incoming), allow (outgoing), disabled (routed)New profiles: skip
Aunque el firewall esté configurado, la nueva configuración no se ejecutará hasta que la habilitemos con:
- sudo ufw enable
Después de habilitarlo, tenga en cuenta que ya no podremos acceder remote-host
a través de SSH, como se menciona en la salida del comando:
OutputCommand may disrupt existing ssh connections. Proceed with operation (y|n)? yFirewall is active and enabled on system startup
Cierra sesión en el servidor remote-host
y prueba la configuración intentando establecer una conexión SSH o VNC. No será posible. A partir de ahora, podremos acceder remote-host
exclusivamente a través de la consola de DigitalOcean.
En local-host
, dejaremos abiertos los puertos SSH. Solo necesitamos una regla de firewall para permitir el acceso a la sesión VNC:
- sudo ufw allow 5901
Después de modificar las reglas del firewall, habilítelo ejecutando:
- sudo ufw enable
Ahora podemos probar la conexión VNC usando el cliente VNC requerido en su máquina local para conectarnos a local-host
un puerto 5901
usando la contraseña VNC que ha configurado.
Para ello, abra su cliente VNC y conéctese a Local_Host_Public_IP:5901
. Una vez que ingrese la contraseña, se conectará a la sesión VNC.
Nota: Si tiene problemas para conectarse a la sesión VNC, reinicie el servicio VNC local-host
e sudo systemctl restart vncserver@1
intente conectarse nuevamente.
En su primer inicio, Xfce preguntará sobre la configuración inicial del entorno:
Para este tutorial, seleccione la opción Usar configuración predeterminada .
Por último, debemos permitir conexiones al puerto 80
en el front-end-server
que se utilizará PageKite. Abra una terminal en front-end-server
y utilice el siguiente comando:
- sudo ufw allow 80
Además, permita el tráfico en el puerto 443
para HTTPS:
- sudo ufw allow 443
Para habilitar la nueva configuración del firewall, ejecute lo siguiente:
- sudo ufw enable
Ahora que hemos configurado los Droplets, configuremos el servidor front-end de PageKite.
Paso 2: Instalación de PageKite en el servidor front-end
Aunque es posible ejecutar PageKite mediante un script de Python para configurar el servidor front-end, es más confiable ejecutarlo mediante un servicio del sistema. Para ello, necesitaremos instalar PageKite en el servidor.
La forma recomendada de instalar un servicio en un servidor Debian es utilizar un paquete de distribución. De esta forma, es posible obtener actualizaciones automáticas y configurar el servicio para que se inicie al arrancar el sistema.
Primero, configuraremos el repositorio para instalar PageKite. Para ello, actualice la lista de paquetes de los repositorios:
- sudo apt-get update
Una vez realizada la actualización, instale el paquete dirmngr
, necesario para soportar la importación del llavero desde el repositorio de PageKite para garantizar una instalación segura:
- sudo apt-get install dirmngr
A continuación, agregue el repositorio al /etc/apt/sources.list
archivo ejecutando:
- echo deb http://pagekite.net/pk/deb/ pagekite main | sudo tee -a /etc/apt/sources.list
Después de configurar el repositorio, importe la clave de empaquetado de PageKite a nuestro conjunto de claves de confianza, de modo que podamos instalar paquetes desde este repositorio. La administración de la clave de empaquetado se realiza con la apt-key
utilidad. En este caso, tenemos que importar la clave AED248B1C7B2CAC3
desde el servidor de claves keys.gnupg.net
, lo que se puede hacer ejecutando:
- sudo apt-key adv --recv-keys --keyserver keys.gnupg.net AED248B1C7B2CAC3
A continuación, actualice nuevamente las listas de paquetes de los repositorios, para que el pagekite
paquete quede indexado:
- sudo apt-get update
Por último, instálalo con:
- sudo apt-get install pagekite
Ahora que tenemos instalado PageKite, configuremos el servidor front-end y configuremos el servicio para que se ejecute en el arranque.
Paso 3: Configuración del servidor front-end
El paquete PageKite que acabamos de instalar se puede utilizar para configurar una conexión a un servidor front-end de PageKite. También se puede utilizar para configurar un servicio front-end que reciba conexiones de PageKite, que es lo que queremos hacer aquí. Para ello, tenemos que editar los archivos de configuración de PageKite.
PageKite almacena sus archivos de configuración en el directorio /etc/pagekite.d
. El primer cambio que tenemos que hacer es deshabilitar todas las líneas del /etc/pagekite.d/10_account.rc
archivo, ya que este archivo solo se usa cuando PageKite se configura como cliente para conectarse a un servidor front-end. Podemos editar el archivo usando nano
:
- sudo nano /etc/pagekite.d/10_account.rc
Para deshabilitar las líneas, agregue un #
para deshabilitar las líneas activas del archivo:
/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
Después de realizar los cambios, guárdelos y salga nano
. A continuación, edite el archivo /etc/pagekite.d/20_frontends.rc
:
- sudo nano /etc/pagekite.d/20_frontends.rc
Agregue las siguientes líneas resaltadas al archivo y comente la defaults
línea, asegurándose de reemplazarla your_domain
con el nombre de dominio que está usando y examplepassword
con una contraseña de su elecció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:portisfrontendports=80,443protos=http,https,rawdomain=http,https,raw:*.pagekite.your_domain:examplepasswordrawports=virtual
Vamos a explicar estas líneas una por una. Primero, para configurar PageKite como un servidor front-end, agregamos la línea isfrontend
. Para configurar los puertos en los que el servidor estará escuchando, agregamos ports=80,443
. También configuramos los protocolos que PageKite va a utilizar como proxy. Para usar HTTP, HTTPS y RAW (que se usa en las conexiones SSH), agregamos la línea protos=http,https,raw
. También deshabilitamos la defaults
configuración para que no haya configuraciones conflictivas para el servidor.
Además de eso, configuramos el dominio que vamos a utilizar para el front-end-server
. Para cada cliente, se utilizará un subdominio, por lo que necesitábamos las configuraciones de DNS en la sección de Prerrequisitos. También configuramos una contraseña que se utilizará para autenticar a los clientes. Usando el marcador de posición password examplepassword
, estas configuraciones se realizaron agregando la línea . Finalmente, agregamos una línea adicional para poder conectarnos usando SSH (que no está documentado, como se explica aquí): .domain=http,https,raw:*.pagekite.your_domain:examplepassword
rawports=virtual
Guarde el archivo y salga nano
. Reinicie el servicio PageKite ejecutando lo siguiente:
- sudo systemctl restart pagekite.service
Luego habilítelo para que se inicie al arrancar con:
- sudo systemctl enable pagekite.service
Ahora que lo tenemos front-end-server
en ejecución, probémoslo exponiendo un puerto HTTP en remote-host
y conectándonos a él desde local-host
.
Paso 4: Conexión al host detrás de NAT
Para probar el front-end-server
, iniciemos un servicio HTTP en remote-host
y lo expongamos a Internet mediante PageKite, de modo que podamos conectarnos a él desde local-host
. Recuerde que tenemos que conectarnos a remote-host
mediante la consola de DigitalOcean, ya que hemos configurado el firewall para rechazar las conexiones SSH entrantes.
Para iniciar un servidor HTTP para realizar pruebas, podemos utilizar el http.server
módulo Python 3. Dado que Python ya está instalado incluso en la instalación mínima de Debian y http.server
es parte de la biblioteca estándar de Python, para iniciar el servidor HTTP utilizando el puerto 8000
ejecutaremos remote-host
:
- python3 -m http.server 8000
Como Debian 9 todavía utiliza Python 2 de forma predeterminada, es necesario invocar Python mediante la ejecución python3
para iniciar el servidor. El carácter final indica que el comando se ejecuta en segundo plano, de modo que aún podemos usar la terminal de shell. La salida indicará que el servidor se está ejecutando:
Outputsammy@remote-host:~$ python3 -m http.server 8000 [1] 1782sammy@remote-host:~$ Serving HTTP on 0.0.0.0 port 8000 ...
Nota: El número 1782
que aparece en esta salida se refiere al ID que se asignó al proceso iniciado con este comando y puede ser diferente según la ejecución. Dado que se está ejecutando en segundo plano, podemos usar este ID para finalizar (matar) el proceso mediante la emisión de kill -9 1782
.
Con el servidor HTTP en funcionamiento, podemos establecer el túnel PageKite. Una forma rápida de hacerlo es mediante el pagekite.py
script. Podemos descargarlo para remote-host
ejecutarlo:
- wget https://pagekite.net/pk/pagekite.py
Después de descargarlo, márquelo como ejecutable ejecutando:
- chmod a+x pagekite.py
Nota: Dado que PageKite está escrito en Python 2 y esta es la versión predeterminada actual de Python en Debian 9, el comando que se muestra a continuación funciona sin errores. Sin embargo, dado que Python predeterminado se está migrando progresivamente a Python 3 en varias distribuciones de Linux, puede ser necesario modificar la primera línea del pagekite.py
script para configurarlo para que se ejecute con Python 2 (estableciéndolo en #!/usr/bin/python2
).
Con pagekite.py
disponible en el directorio actual, podemos conectarnos front-end-server
y exponer el servidor HTTP en el dominio ejecutando lo siguiente, sustituyendo y con nuestras propias credenciales:remote-host.pagekite.your_domain
your_domain
examplepassword
- ./pagekite.py --clean --frontend=pagekite.your_domain:80 --service_on=http:remote-host.pagekite.your_domain:localhost:8000:examplepassword
Echemos un vistazo a los argumentos de este comando:
--clean
Se utiliza para ignorar la configuración predeterminada.--frontend=pagekite.your_domain:80
especifica la dirección de nuestro frontend. Ten en cuenta que estamos usando el puerto80
, ya que hemos configurado el frontend para que se ejecute en este puerto en el paso 3.- En el último argumento, configuramos el servicio que vamos a exponer ( ), el dominio que vamos a utilizar ( ), la dirección local y el puerto donde se ejecuta el servicio ( ya que estamos exponiendo un servicio en el mismo host que estamos usando para conectarnos a PageKite), y la contraseña para conectarnos al frontend ( ).
--service_on=http:remote-host.pagekite.your_domain:localhost:8000:examplepassword
http
remote-host.pagekite.yo
Deja una respuesta