Cómo usar SSH fuera de la red doméstica

15

Recientemente configuré SSH en mi Raspberry Pi. Ha ido muy bien, especialmente desde que puedo controlar la computadora a través de mi iPhone con la aplicación Server Auditor . Lamentablemente, esto solo funciona a través de la red local.

¿Cómo puedo hacer que mi SSH funcione cuando estoy fuera de casa? (Preferiblemente funciona con la aplicación).

xxmbabanexx
fuente
¿puedes reenviar un puerto desde tu enrutador?
SteveIrwin
1
@SteveIrwin Lo más probable es que pueda, pero dado que no conozco las redes, prefiero una solución fácil como Port Map . En realidad ... si comparto el internet de mi Mac con mi Pi, ¿podría compartir los puertos reenviados?
xxmbabanexx
1
configurar un puerto hacia adelante es probablemente al menos tan fácil como usar Port Map. Debe contarnos más sobre cómo está configurada su LAN
John La Rooy
Su mejor opción es instalar el servicio de Weaved (www.weaved.com), y listo. Todos los demás tutoriales que encontrarás en Internet te llevarán por un camino frustrante.
IgorGanapolsky
para la publicación que sugiere el uso de socketxp, use lo siguiente para descargar socketxp en el RPI curl -O portal.socketxp.com/download/arm/socketxp && chmod + wx socketxp && sudo mv socketxp / usr / local / bin en lugar de linux archivo.
jeonghoon

Respuestas:

20

Estos son los pasos que utilicé (en Debian) que pueden resultarle útiles.

1.Configuración de IP estática para el Pi.

a. Abra el archivo de interfaces con el comando

sudo nano /etc/network/interfaces

b.Cambie el archivo de interfaces a lo siguiente (Esto funciona para mí, no estoy seguro de si se pueden excluir algunas de las líneas).

auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.1.2  #static ip you want for the pi
netmask 255.255.255.0
gateway 192.168.1.1    # the ip address of the router

c. Verifique si el Ip se cambia usando el comando ifconfig

2.Configurando un DNS dinámico

Lo más probable es que la dirección IP asignada por su ISP sea dinámica, por lo que necesitamos una forma de resolver los cambios en la dirección IP. Utilizo el software dnsdynamic y ddclient para lograr esto. Ambos son de uso gratuito.

Regístrese para obtener una cuenta con dnsdynamic

b. Agregue un nuevo dominio y seleccione un nombre y el dominio de la lista. Puede elegir cualquiera de los dominios disponibles con el subdominio que elija. Haga clic en verificar disponibilidad y luego agregue

captura de pantalla dnsdynamic

3.Configuración de ddclient en Pi

a.Instale ddclient usando el comando

sudo apt-get install ddclient

b.Abra el archivo de configuración para ddclient usando el siguiente comando y agregue las siguientes líneas.

sudo nano /etc/ddclient.conf

y cambie el archivo a lo siguiente.

# /etc/ddclient.conf
daemon=600
timeout=10
ssl=yes
protocol=dyndns2
use=web, web=myip.dnsdynamic.com
server=www.dnsdynamic.org
[email protected]  #userid for dnsdynamic.com
password='xxxx'      #password for the same put inside quotes
x.dnsdynamic.com  #the domain name you created

y guarda el archivo.

d. Queremos que el servicio ddclient se inicie automáticamente al reiniciar, así que haga lo siguiente.

sudo nano /etc/rc.local

Agregue el siguiente comando antes de salir 0 (que es la última línea)

sudo /usr/sbin/ddclient -daemon 600 -syslog

Guarde el archivo. Para iniciar ddclient, reinicie su pi o ejecute el comando anterior en el indicador. Mantendrá su nombre de dominio actualizado con la dirección IP actual cambiando cuando sea necesario.

4 reenvío de puertos

a. Encuentre el modelo de su enrutador.

b. Ir a portforward.com

c. Ingrese la marca y el modelo de su enrutador para encontrar la guía detallada sobre el puerto de reenvío.

d. Después de seleccionar la marca y el modelo del enrutador, haga clic en la guía predeterminada de la página redirigida.

e. En el cuadro de texto Ip estático , ingrese la IP estática del Pi que proporcionó en el Paso 1.

f. Siga los pasos y reenvíe el puerto 22. El puerto de origen debe ser 22 y el puerto de destino puede ser cualquier cosa. Recuerde usar el puerto de destino cuando ingrese a pi. Para evitar confusiones, tiendo a usar el mismo origen y destino Puerto.

Si estaba siguiendo el tutorial, inicie sesión en su pi desde cualquier lugar mediante el reemplazo de la dirección IP con el nombre de dominio. por ejemplo, yo uso [email protected]: 22 para ingresar a mi pi.

SteveIrwin
fuente
¡Muchas gracias! Cuando regrese de visitar Exeter, ¡probaré esto!
xxmbabanexx
1 Gran respuesta, sin embargo, lo que realmente necesita para usar sudoen /etc/rc.local, no es que ya se está ejecutando como root?
HeatfanJohn
Así arruiné totalmente mis configuraciones de Ngrok y Weaved. ¡Ahora no puedo conectarme en absoluto!
IgorGanapolsky
2

Primero querrás configurar el reenvío de puertos. Cada enrutador es ligeramente diferente, por lo que tendrá que buscar los detalles de su enrutador.
Hay guías prácticas de reenvío de puertos genéricos que pueden funcionar para la mayoría de los enrutadores, pero sugeriría encontrar una guía para su modelo de enrutador real.

Establezca un puerto memorable para vincular a su raspberry pi, como 23456 o algo así. Tenga cuidado de no sobrescribir los números de puerto comunes .

Finalmente, usando ssh haz lo siguiente:

$ ssh -p 23456 user@IP

Dónde:

phalt
fuente
¿Por qué no puedo usar el puerto 22 en lugar del 23456 personalizado?
IgorGanapolsky
1
@IgorGanapolsky puede hacerlo, pero 1) si tiene otra computadora a la que le gustaría conectarse a través de SSH fuera de su hogar, habrá un conflicto y 2) más riesgoso ya que muchos "piratas informáticos" intentan iniciar sesión a través del puerto 22 , por lo cerrándolo se recomienda a menudo en los servidores
meneldal
2

Acceder a su RaspberryPi (o incluso computadoras portátiles / servidores) desde fuera de su red doméstica (es decir, desde Internet) no es una tarea fácil, porque su computadora portátil o RaspberryPi solo tiene una dirección IP local (en el rango de 10.xxx o 192.168.xx rango). No tiene una dirección IP pública visible desde Internet.

La respuesta simple a su pregunta es utilizar servicios en línea gratuitos como SocketXP que proporciona un punto final de túnel público seguro a SSH en su RaspberryPi desde fuera de la red doméstica.

SocketXP proporciona una manera simple, segura y fácil de acceder a su RaspberryPi desde la red externa. SocketXP no requiere que piratee ninguna configuración en su enrutador WiFi. Funciona fuera de la caja. Para saber cómo configurar su RaspberryPi en SSH desde el exterior, lea este blog sobre cómo remotamente SSH en su RaspberryPi usando SocketXP.

Cómo configurar SocketXP:

Paso 1 : Instale el cliente SocketXP en su RaspberryPi usando el siguiente comando.

$ curl -O https://portal.socketxp.com/download/linux/socketxp && chmod +wx socketxp && sudo mv socketxp /usr/local/bin

Paso 2: conecte el cliente SocketXP con el servicio en la nube SocketXP utilizando el siguiente comando. Debe registrarse en https://portal.socketxp.com para obtener su token de autenticación único.

$ socketxp -register "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDk1MTg0MDAsImlkIjoiZ2FuZXNodmVscmFqYW5AZ21ha6K208n0.cB2uYevpH4lWIQGQUJdQ0eiEDqS8OiP_YOiqernnui3rjjadfadsfsfas34"

Paso 3 : Obtenga un punto final de túnel público para acceder a su RaspberryPi desde Internet.

$ socketxp -connect tcp://localhost:22

Tunnel Access -> tunnel.socketxp.com:35277

Paso 4 : SSH en su RaspberryPi desde Internet usando el siguiente comando.

$ ssh [email protected] -p 35277

donde "raspberry-username" es el nombre de usuario / contraseña que utiliza para iniciar sesión SSH en su RaspberryPi.

Ganesh Velrajan
fuente
1

Esta pregunta es antigua, a medida que pasa el tiempo hay menos posibilidades de que obtenga una dirección IPv4 accesible al público. Lo más probable es que esté detrás de un CGNAT, lo que significa que comparte un solo IPv4 público con otros clientes del ISP. Por lo tanto, no es posible hacer un reenvío de puerto a su PI ni a ninguna otra cosa.

Si tiene IPv6, puede darle a su PI una dirección estática y permitir el acceso a ella en su enrutador. Muchos proveedores móviles ahora dan IPv6 a los teléfonos. Los viejos ISP "terrestres" (fibra, DSL, coaxial, etc.) a menudo arrastran sus pies.

También puede obtener un VPS (servidor privado virtual) barato con un IPv4 público en algún lugar de la nube, y hacer un túnel SSH desde el PI al VPS.

Lenne
fuente
0

Además de la respuesta de phalt, debe consultar uno de los servicios dinámicos de DNS, como Sin IP . Le permiten acceder a su red doméstica con un nombre de host estático, aunque su dirección IP puede cambiar diariamente debido a que su proveedor de DSL o cable lo desconecta. También tienen una buena página de inicio , que también le presenta a configurar su enrutador en consecuencia.

Es posible que desee instalar el inadynpaquete en su Raspberry Pi para actualizar sus entradas DNS sin IP, cuando cambie la IP. Puede hacer esto ejecutando:

sudo apt-get install inadyn

Del inadyn README tomé esta llamada de muestra:

inadyn --dyndns_system [email protected] -u USER-p PASS -a HOST

Espero que esto ayude.

Arne
fuente
No-Ip tiene un DUC (cliente de actualización dinámica), que asegurará que su dirección IP no cambie.
IgorGanapolsky
0

Adicional a la respuesta de Steve Irwin:

Paso 1:

si se conecta a través de wlan, use:

iface wlan0 inet static
wpa-ssid "xxx" #<=your ssid
wpa-psk "yyy"  #<=your pw
address 192.168.1.xxx #<=preferred static ip (xxx<255)
netmask 255.255.255.0
gateway 192.168.1.1 #<=router's ip

Paso 2:

Después de cambiar lo anterior, debe reiniciar networking:

sudo /etc/init.d/networking restart
David Bielen
fuente
También agregué 2 líneas frente al bloque estático, auto wlan0 allow-hotplug wlan0 Lo encontré en esta publicación raspberrypi.stackexchange.com/a/10320/10148 También intenté hacerlo sin ellos, pero algo no funcionó.
XandruCea
Esta respuesta debe considerarse desactualizada debido a los cambios en la configuración de red y el sistema de inicio de Raspbian.
Ricitos de oro
0

Además, algunos enrutadores tienen soporte incorporado para algunos servicios de DNS dinámico, puede habilitar esta opción (si existe) en su enrutador para evitar instalar el cliente en su PI (y ahorrar un poco de sobrecarga mientras lo hace).

usuario17925
fuente
0

Entonces, tiene un servidor ssh (su Raspberry PI) detrás de un firewall (su enrutador) y desea conectarlo desde cualquier lugar. Supongamos que su servidor ssh está configurado correctamente, es decir, ejecutar 'ssh username @ localhost date' en su Raspberry muestra la fecha / hora actual.

Tienes que resolver dos problemas:

  • Su enrutador debe reenviar un puerto fijo a su puerto sp de frambuesa (generalmente 22).
  • Debe conocer la dirección IP pública de sus enrutadores (que generalmente cambia en la reconexión del enrutador y hasta una vez cada 24 h).

Reenvío de puertos y DynDNS

Existen soluciones (como han señalado otros):

Si está configurado correctamente, es posible conectar su rasbperry pi con:

ssh username@[yourIP] -p [port] 
# or using dyndns 
ssh [email protected] -p [port]

Usando sshhub.de

Otra solución muy conveniente, no mencionada hasta ahora, es SSHHub ( descargo de responsabilidad , soy el autor). Utiliza el reenvío de ssh para acceder a su Rasperry PI desde cualquier lugar. Es confiable, gratuito y bastante simple de configurar . Registrarse una vez:

ssh [email protected] register

ejecutar en su Raspberry PI:

while true; do ssh [username]@sshhub.de -R 22:localhost:22 -N -o ServerAliveInterval=10; sleep 10; done

...¡y eso es! Puede conectar su Raspberry Pi desde cualquier lugar:

ssh -J [username]@sshhub.de localhost
Oliver
fuente
Hola y bienvenido a Raspberry Pi! Haga el recorrido y visite el centro de ayuda para ver cómo funcionan las cosas aquí. Gracias por su contribución, pero tenga en cuenta que le pedimos amablemente que divulgue su afiliación en sus respuestas . (Supongo que usted es el autor del software recomendado.)
Ghanima
Gracias por señalarme en la dirección correcta. Yo soy el autor Ciertamente quiero aportar valor con mi respuesta para las personas que buscan una solución. Y espero que lo haga tan bien como sshhub.
Oliver
0

Podría usar una VPN para habilitar el acceso entrante a su pi. OpenVPN es una solución, que requeriría tener una computadora accesible desde Internet (un puerto entrante). Sin embargo, siempre que tenga una computadora accesible, las otras computadoras no necesitan ser, ya que pueden ser clientes del servidor OpenVPN.

Otra opción sería utilizar un servicio como ZeroTier, que proporciona servidores centralizados para crear una VPN, por lo que no necesitaría ejecutar su propio servidor. Esto también es gratis.

Rebroad
fuente
Otra muy buena opción es usar wireguard .
Ingo