iniciar automáticamente un túnel ssh inverso al iniciar el sistema

iniciar automáticamente un túnel ssh inverso al iniciar el sistema

Tengo una máquina remota detrás de un firewall a la que deseo conectarme a través de SSH. Hasta donde tengo entendido, esto se puede lograr mediante el uso de un túnel ssh inverso.

Entonces el comando que estoy usando es

ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa.pub  [email protected]

Mi principal problema es que quiero ejecutar este comando cada vez que se inicia la computadora para que se pueda acceder a ella después de reiniciar.

Intenté usar cron agregando el comando tanto en el crontab de mi usuario como en /etc/cron. Sin embargo, el problema que tengo es que a ambos comandos se les solicita una contraseña. Creé the id_rsa.pubun archivo y lo envié al servidor remoto pero todavía no parece funcionar.

Si he iniciado sesión (por ejemplo, a través de teamviewer), puedo ejecutar el comando y no se me solicita ninguna contraseña. Si ejecuto el comando como root ( sudo), se solicita la contraseña (vacía) para el archivo rsa. Sospecho que mi problema está aquí, es decir, cuando cron ejecuta el comando ssh solicita la contraseña y el comando se bloquea.

Intenté usar tanto el archivo rsa de mi usuario como el archivo rsa del root y con ninguno de ellos logro conectarme.

Respuesta1

Simplemente agregue 'dormir 60'; antes de su comando ssh:

@reboot sleep 60;ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa  [email protected]

Después de reiniciar, su red aún no funciona.

Respuesta2

Después de combinar varias fuentes, creé un servicio para iniciar automáticamente el canal ssh inverso. Se encuentran los archivos de configuración y los pasos necesarios. en este repositorio

Respuesta3

Una mejor solución puede serautossh:

"autossh es un programa para iniciar una copia de ssh y monitorearla, reiniciándola según sea necesario en caso de que muera o deje de pasar tráfico".

Como dice la cita, esto tiene el beneficio adicional de proporcionar capacidades "siempre activas".

Respuesta4

Solucionando el problema de SSH

No puedes autenticar la máquina remota conpúblicoclave, necesitas usarprivadoclave para hacerlo. La clave pública debe estar en el servidor remoto. Si no está seguro, simplemente copie la clave pública al servidor remoto de esta manera:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@remoteserver

y luego ejecute su comando con clave privada:

ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa  [email protected]

Ejecutando este comando en el arranque

Como ya usaste crontab, ejecuta crontab -epara editar tu cron. Agregue la siguiente línea para ejecutar ese comando una vez que su computadora se inicie.

@reboot ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa  [email protected]

información relacionada