Acesse serviços remotos como se fossem locais usando uma única conexão SSH

Acesse serviços remotos como se fossem locais usando uma única conexão SSH

É possível criar um único túnel SSH para endereçar um host remoto como se estivesse no sistema local, por exemplo. digite os seguintes pseudo-exemploslocalmentee alcançar o efeito desejado:

  • Copiar bancos de dados: mysqldump remote | mysql localoumysqldump local | mysql remote
  • Anexar texto aos arquivos remotos:echo blah >> remote:file.txt
  • Alterar arquivos remotos:sed ... remote:file.txt
  • Execute comandos remotos:apk add blah

Se uma única conexão não for possível, qual é a maneira mais conveniente de conseguir isso?

Responder1

Para acessar o mysql remoto você pode usar localhost:12345 encaminhando:

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

Para as operações de arquivo você pode montar o host remoto via sshfs:

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

A execução de comandos remotos funciona normalmente via ssh:

ssh user@remote command ....

Você pode fazer tudo isso usando apenas uma conexãose você adicionar isso ao seu ~/.ssh/config:

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

A primeira conexão ssh será a master e as próximas a reutilizarão. Novas conexões escravas estarão disponíveis muito rapidamente. Nenhuma sobrecarga inicial de troca de chaves, etc.

informação relacionada