La idea básica aquí es conectarse a una computadora remota en una red y hacer que todo el tráfico de su red parezca local en esa red.
La primera razón por la que alguien podría necesitarlo es para mejorar la seguridad y eliminar las amenazas potenciales de manera temprana. Por ejemplo, es posible que deba imprimir en una impresora de red sin "exponer" esta impresora a Internet normal. Como resultado, por ejemplo, alguien puede sentarse en un café y, habiéndose conectado a la red a través de VPN, imprimir documentos en la impresora, sentirse como si estuviera en su escritorio y la impresora está parada a un par de metros de él. El uso de una VPN también significará que los datos transmitidos a través de la red WiFi del café estarán encriptados.
La segunda razón es ocultar la ubicación real del usuario de miradas indiscretas. Digamos que a alguien le gusta ver videos de la BBC pero vive en Ecuador. Esto significa que para que los videos no se le bloqueen, deberá conectarse a través de VPN a una red ubicada en el Reino Unido. Si las autoridades de un determinado país controlan y censuran Internet, los residentes de ese país también pueden beneficiarse de la oportunidad de disfrazar su tráfico.
El uso de SSH para establecer una conexión VPN está bien para las dos tareas anteriores. Sin embargo, si está interesado principalmente en el primero de ellos, es mejor que utilice un enrutador dedicado o una computadora pequeña, como la Raspberry Pi, destinada a resolver su problema. Debo decir que si alquila un servidor en algún lugar, entonces "VPN sobre SSH" no es para usted.
Preparación preliminar
VPN
Solo necesita acceso de root a ambas máquinas. Se debe instalar un servidor SSH en la computadora remota. Por supuesto, también necesitará un cliente SSH. Tanto las máquinas locales como las remotas deberán realizar alguna configuración. Yo uso KDE, así que utilizo NetworkManager para realizar los ajustes necesarios, pero puede ir al revés. Usar NetworkManager simplemente facilita las cosas.
Es necesario realizar algunas configuraciones especiales en el servidor, pero es muy posible que ya estén hechas en él. Entonces, el archivo
/etc/ssh/sshd_config
debe contener una línea
PermitTunnel=yes
. Además, es posible que deba establecer un
yes
parámetropara el valor
AllowTCPForwarding
. El cortafuegos también puede necesitar algunas configuraciones. Sin embargo, las instrucciones para configurar el complemento NetworkManager puede ser útil incluso para aquellos que no utilizan este programa.
Configuración del lado del cliente
Si está utilizando NetworkManager, necesitará el complemento adecuado. Para Neon y otras distribuciones basadas en Debian, el paquete está bien
network-manager-ssh
. Esto es todo lo que necesita. Si no desea utilizar NetworkManager, puede utilizar los siguientes comandos del material del autor del complemento:
ssh -f -v -o Tunnel=point-to-point -o ServerAliveInterval=10 -o TCPKeepAlive=yes -w 100:100 root@YOUR_SSH_SERVER \ '/sbin/ifconfig tun100 172.16.40.1 netmask 255.255.255.252 pointopoint 172.16.40.2' && \ /sbin/ifconfig tun100 172.16.40.2 netmask 255.255.255.252 pointopoint 172.16.40.1
Esto requiere acceso de root a ambos sistemas, ya que estamos creando un túnel. Esto, incluso cuando se usa el complemento, genera varios problemas. Obviamente, no nos gustaría que nos pidieran constantemente una contraseña para la conexión SSH y verificar la clave. Pero si configura manualmente la VPN, puede solucionar estos problemas.
Problemas
La mayoría de los sistemas modernos no le permiten iniciar sesión como root con una contraseña y, a veces, no le permiten conectarse al sistema en este modo. Por lo tanto, en primer lugar, debemos resolver este problema. Además, cuando NetworkManager inicia SSH, busca claves para el usuario raíz, no para el usuario normal. Si no puede encontrar algo, simplemente se detiene. Por lo tanto, debemos proporcionar un inicio de sesión de root sin problemas.
Para proporcionar la capacidad de iniciar sesión como root en el servidor, debe editar el archivo
/etc/ssh/sshd_config
y establecer el parámetro
PermitRootLogin
en
yes
... Le recomiendo que trabaje en este modo exactamente el tiempo que sea necesario para completar los siguientes pasos de configuración del servidor. A continuación, deberá reiniciar el servidor sshd, por ejemplo, con el siguiente comando:
systemctl restart sshd
También puede utilizar este comando:
/etc/init.d/ssh restart
Luego, al iniciar sesión en la máquina local con una cuenta normal, debe usar
ssh-copy-id
para instalar el certificado en la máquina host. Una vez hecho esto, debe volver al servidor y cambiar el
/etc/ssh/sshd_config
valor
PermitRootLogin
a
prohibit-password
. Esto le permitirá iniciar sesión en el servidor como root usando un certificado, pero no usando una contraseña.
Si ya ha iniciado sesión con su cuenta raíz, es posible que ya se le haya preguntado si desea aceptar la clave del servidor. Si no es así, entonces tenemos un problema. Si puede, inicie sesión y responda sí a la pregunta correspondiente, después de lo cual el sistema dejará de hacerla. Pero, si esto no se puede hacer, podemos solucionar el problema deshabilitando
StrictHostKeyChecking
.
En teoría, puede pasar opciones ssh adicionales al complemento NetworkManager, pero por alguna razón este enfoque no funciona con la versión del complemento de los repositorios. Si no usa el complemento, haciendo todo manualmente, puede realizar los ajustes necesarios usted mismo. La configuración SSH para el usuario root se puede establecer en
/root/.ssh/config
. También puede establecer la configuración global en
/etc/ssh/ssh_config
.
Si cambia la configuración global, si el sistema lo admite, considere usar
/etc/ssh/ssh_config.d
. Gracias a esto, podrá configurar parámetros para un host específico, que no se sobrescribirán cuando se actualice el sistema. Por ejemplo, puede crear un archivo en el directorio apropiado con el nombre
hackaday.conf
:
Host *.hackaday.com hackaday.com StrictHostKeyChecking no Tunnel yes
Nuevamente, si no le gusta la idea de verificar la clave de host, simplemente inicie sesión una vez como root y acepte manualmente la clave remota. O, si eres valiente, edita manualmente
/root/.ssh/known_hosts
.
Conexión
Todo debería estar listo para funcionar ahora. Si está utilizando el complemento para NetworkManager, solo necesita establecer una nueva conexión. Es decir, debe ir a la sección de conexiones VPN y seleccionar SSH.
Seleccionar el tipo de conexión
Ahora necesita configurar varios parámetros de la nueva conexión. Incluido: debe especificar el certificado que planea usar para iniciar sesión en el sistema remoto.
Configuración de una conexión
Después de guardar la configuración de la conexión, esta conexión se puede activar, como cualquier otra interfaz de red. Si desea probar su nueva VPN, primero, normalmente, solicite su dirección IP en el sitio web dedicado . Y luego encienda la VPN y averigüe su dirección nuevamente. Si no logra establecer una conexión VPN, busque en el registro del sistema información sobre los errores de SSH.
Salir
Existen otras soluciones VPN, por supuesto. Pero está casi garantizado que la computadora remota con la que está trabajando tenga un servidor SSH. Por lo tanto, el método propuesto para establecer una conexión VPN a través de SSH es una solución simple y conveniente que se puede utilizar sin ninguna preparación previa.
Por cierto, puedes hacer muchas cosas interesantes con SSH . Por ejemplo, para organizar el trabajo conveniente con archivos .
¿Usas una VPN?