Isso é muito fácil de usar usando a ferramenta nc e os túneis ssh.
1. Abra o túnel ssh
Na sua sessão ssh, digite ~ C em uma nova linha. Você receberá o prompt "service console" do ssh, que se parece com isto:
ssh>
Digite o comando encaminhamento local para abrir um túnel ssh:
ssh> -L22000:targethost:22001
Forwarding port.
Onde targethost
é o nome do host ou endereço IP da máquina à qual você está conectado.
Agora, supondo que o servidor ssh na máquina de destino não tenha sido configurado para proibir túneis, você tem o encaminhamento de conexão desejado: ssh
client na sua máquina escuta a porta 22000 e encaminhará qualquer tráfego enviado para ele a porta 22001 em targethost
.
2. Inicie um servidor de rede na máquina remota
Isto é tão simples quanto entrar em sua sessão ssh já aberta com o seguinte comando:
remote$ nc -l localhost 22001 | sh
Isso iniciará um servidor TCP escutando na porta 22001 - que é a porta alvo do nosso túnel ssh - e roteará os dados recebidos (presumivelmente, comandos shell) para uma instância targethost
shell.
3. Envie seu script pelo túnel
local$ cat yourscript.sh | nc localhost 22000
Isso enviará o corpo do script ao seu túnel ssh e será executado em um shell no targethost
. Você verá a saída do script no seu terminal com a sessão ssh.
Também observarei que o túnel ssh (etapa 1) neste cenário não é estritamente necessário; Você também pode iniciar o servidor aberto e conectá-lo diretamente pela Internet. No entanto, você precisará usar o encapsulamento se o host de destino não puder ser acessado diretamente (por exemplo, por trás de um NAT) ou se a criptografia ssh for desejada.