Acceda a servicios remotos como si fueran locales mediante una única conexión SSH

Acceda a servicios remotos como si fueran locales mediante una única conexión SSH

¿Es posible crear un único túnel SSH para abordar un host remoto como si estuviera en el sistema local, por ejemplo? escriba los siguientes pseudoejemplosen la zonay lograr el efecto deseado:

  • Copiar bases de datos: mysqldump remote | mysql localomysqldump local | mysql remote
  • Agregar texto a archivos remotos:echo blah >> remote:file.txt
  • Cambiar archivos remotos:sed ... remote:file.txt
  • Ejecutar comandos remotos:apk add blah

Si no es posible una única conexión, ¿cuál es la forma más conveniente de lograr estas cosas?

Respuesta1

Para acceder a MySQL remoto, puede utilizar localhost:12345 reenviando:

ssh -Nf -L 12345:localhost:3306 user@remote

Para las operaciones de archivos, puede montar el host remoto mediante sshfs:

mkdir /tmp/remote
sshfs user@remote:/ /tmp/remote
echo blah >> /tmp/remote/file.txt
sed ... /tmp/remote/file.txt

La ejecución de comandos remotos funciona normalmente a través de ssh:

ssh user@remote command ....

Puedes hacer todo esto usando una sola conexión.si agrega esto a su ~/.ssh/config:

ControlMaster auto
ControlPath ~/.ssh/masters/%l%r@%h:%p

La primera conexión ssh será la maestra y las siguientes la reutilizarán. Las nuevas conexiones esclavas estarán disponibles muy rápidamente. Sin gastos generales iniciales de intercambio de claves, etc.

información relacionada