Por ejemplo, hay un servidor en casa y quiero conectarme a él a través de ssh (tal vez incluso a través de scp), bueno, solo para checkear como esta. Solía hacerlo a través de una VPN asi ¡Acceso remoto a mi servidor doméstico FreeBSD a través de OpenVPN! e incluso funcionó, el enrutador del proveedor de cable normalmente hace port forwanding, solo tenía que conocer la IP externa. Pero ahora traté hacer port forwanding en el enrutador de un proveedor de Internet móvil, y nada, parece que hat que pagar por eso a parte y solo funciona si compra una IP estática…
… pero, de hecho, no necesita administrar enrutador, existe una cosa llamada túnel ssh. ¡El servidor doméstico se conecta a un servidor en Internet que está configurado para reenviar todas las conexiones (designadas) a otro lugar! Para este método, necesita su propio servidor VDS / VPS … ¡pero quien no lo tenga ahora, todos! Sí, ¡incluso unos Amazon Clouds valdria!
Releyé muchas articulos, pero tal vez solo este artículo me ayudó mucho evgslb.blogspot.com gracias. Pero por cierto, lo leí durante medio día, ¡no podía entender cómo debería funcionar!
Como funciona eso
Necesitamos un servidor Linux disponible en Internet con IP estática directa. No lo pude entender por mucho tiempo, pero no necesito hacer configuraciones especiales , ¡solo necesito tener un usuario que pueda conectarse a este servidor a través de ssh! Además, en las tres máquinas enbolucradas, debe estar instalado ssh – en Linux, ya esta instalado, existe la opinión de que es posible hacerlo en Windows, a través de Putty. En la maquina a que vas a conectar, en él debe ejecutar el túnel ssh para recibir, y en el que conectará el túnel ssh a la salida.Un comando inicia estos túneles para conectarse a un servidor en Internet.
Configurar un servidor para conectar túneles de clientes
Tengo un viejo servidor Centos 6.8, ¡todas las rares quizas se deben a eso!
Me conecto al servedor tras ssh
Creo un usuario user1tunnel
/usr/sbin/adduser user1tunnel
crear una contraseña para él
user1tunnel passwd
Luego estaba un poco preocupado por lo que pasa si alguien entra en esta cuenta y comienza a hacer algo en el servidor. Para hacer esto, hice el shell lshell para usuarios en el que todo está recortado aquí ¡Configure, mueva, pruebe el nuevo VPS en CentOS 6! do tambien!
Agrego este shell al nuevo usuario
chsh -s /usr/bin/lshell user1tunnel
Al mismo tiempo, el centos jura que este shell no está en ningún archivo, simplemente lo agregó a ese archivo y repitió
Ahora se necesita verificar la configuración de ssh aquí
/etc/ssh/shhd_config
debe ser incluido
AllowTcpForwarding yes GatewayPorts yes
ese tambien (en futuro seguro sera necesario)
PubkeyAuthentication yes AuthorizedKeysFile /home/%u/.ssh/authorized_keys
y el usuario debe estar escrito en
AllowUsers uservasya usersasha userarsen user1tunnel
Reiniciamos ssh, mi conexión ssh no se rompe
/sbin/service sshd restart
También es importante establecer aquí esos parámetros, deberían ayudar a romper las sesiones bloqueadas, que no se completaron correctamente
ClientAliveInterval 15 ClientAliveCountMax 3
Esto solo funciona en SSH 2, si no sucede nada, el servidor le pregunta al cliente «Estás vivo» 3 veces cada 15 segundos, ¡y cuelga la llamada si no hay respuestas! Debería ayudar con un puerto ocupado, eso pasa cuando estas connectado mucho tiempo, luego se cuelga, se cae, se reinicia pero el servidor dice
Warning: remote port forwarding failed for listen port 12345
Configuracion del aquel quien necesita conectarse a través de ssh
¡Tengo Ubuntu 18.04 Desktop en la computadora de mi casa y quiero conectarme a él! Además, con este método, con ssh-tunnel no se necesita saber cuál es mi IP, ¡porque se cambia constantemente!
En la consola, ejecute
ssh -f -N user1tunnel@123.45.67.89 -R 12345:localhost:22
por ahora asi, debe ingresar la contraseña con las manos
f – significa ejecutar en segundo plano
123.45.67.89 – ip del servedor con ssh y el usario que habiamos hecho antes
R – eso significa el túnel de entrada
12345 – qualquiert port libre
Después de ejecutar ese comando, ya puede acceder del servidor a esta computadora a través de ssh asi
ssh -p 12345 juancho@localhost
donde juancho es el nombre del usario en la computadora a que nos conectamos
Comprobamos si el puerto está escuchando … y los comandos network no funcionan, pero está claro que el comando se ejecuta así
ps -aux | grep ssh
habra que pensar en eso mas tarde…
Configuro aquel computador desde el que necesitas conectarte a través de ssh
Y ese computadora también sera Linux
Primero necesitas hacer un túnel
ssh -f -N user1tunnel@123.45.67.89 -L 12345:localhost:12345
lo mismo pero con L
Y conectate desde la consola
ssh -p 12345 juancho@localhost
Aquí todo se observa de maravilla perfectamente, a diferencia del aquel a quién hay que conectarse
netstat -ntlp | grep 12345
vemos eso
tcp 0 0 127.0.0.1:12345 0.0.0.0:* LISTEN 8166/ssh tcp6 0 0 ::1:12345 :::* LISTEN 8166/ssh
Cómo hacer que el túnel ssh no se rompa y se vuelva a conectarse
Lo estoy haciendo tal y como lo ponen aquí, es sorprendente que haya tal contenido en YouTube
Instalo
sudo apt-get install autossh
Vamos a la carpeta home .ssh y generamos las claves allí, estamos bajo el usuario juancho
cd /home/juancho/.ssh/
ssh-keygen -t rsa
doy el nombre juancho sin contraseña
Una vez, las claves funcionaron solo cuando las generé por segunda vez … si no está claro por qué no funciona, ¡genere las claves nuevamente!
juancho.pub eso hay que poner al servedor
sudo scp ./juancho.pub user1tunnel@123.45.67.89:/home/user1tunnel/
En el servidor remoto ejecutamos
mkdir /home/user1tunnel/.ssh
cat ./juancho.pub >> ~user1tunnel/.ssh/authorized_keys
chown -R user1tunnel:user1tunnel /home/user1tunnel
Ahora en la computadora local podemos ingresar sin una contraseña aaasi
ssh user1tunnel@123.45.67.89
Ahora ejecutaremos autossh, es importante que se ejecute en segundo plano, y en segundo plano no se puede ingresar la contraseña, por lo que tuvimos que hacer todo eso con archivos
autossh -M 0 -f -N user1tunnel@123.45.67.89 -R 12345:localhost:22
Funciona, inmediatamente se pone en segundo plano con la tecla -f , para el diagnóstico se puede usarlo sin ese flag
Ahora agregue al cron esa linea para que comience en el arranque
crontab -e
Aquí también es necesario registrar dónde obtener el archivo clave, de lo contrario no comenzará
@reboot autossh -M 0 -f -N user1tunnel@123.45.67.89 -R 12345:localhost:22 -i /home/juancho/.ssh/juancho
Cómo conectarse no desde Linux
La gente usa Putty, en una ventana abren un túnel, en la segunda se conectan al port local para la redirección, ¡no funcionó para mí!
La forma más confiable es iniciar sesión en el servidor usando Putty y allí hacer
ssh -p 12345 juancho@localhost
específicamente para esto en lshell esta permitido usar comando ssh
También en Windows 10 + Windows Subsystem para Linux (incluido en los componentes de Windows) + Ubuntu 18.04 LTS (que se instala desde la tienda de Windows), puede hacer todo como en Linux para elevar el túnel y conectarse a través de ssh
ssh -f -N user1tunnel@123.45.67.89 -L 12345:localhost:12345
ssh -p 12345 juancho@localhost
Deja una respuesta